mirror of
https://github.com/owncast/owncast.git
synced 2024-11-24 21:59:43 +03:00
Add in the optimization where multiple websocket events can exist within a single message
This commit is contained in:
parent
8b2747e4d7
commit
fac06257ad
2 changed files with 30 additions and 17 deletions
|
@ -135,6 +135,14 @@ func (c *ChatClient) writePump() {
|
|||
log.Debugln(err)
|
||||
}
|
||||
|
||||
// Optimization: Send multiple events in a single websocket message.
|
||||
// Add queued chat messages to the current websocket message.
|
||||
n := len(c.send)
|
||||
for i := 0; i < n; i++ {
|
||||
_, _ = w.Write(newline)
|
||||
_, _ = w.Write(<-c.send)
|
||||
}
|
||||
|
||||
if err := w.Close(); err != nil {
|
||||
return
|
||||
}
|
||||
|
|
|
@ -153,6 +153,10 @@ export default class Websocket {
|
|||
pass it along to listeners.
|
||||
*/
|
||||
onMessage(e) {
|
||||
// Optimization where multiple events can be sent within a
|
||||
// single websocket message. So split them if needed.
|
||||
var messages = e.data.split('\n');
|
||||
for (var i = 0; i < messages.length; i++) {
|
||||
try {
|
||||
var model = JSON.parse(e.data);
|
||||
} catch (e) {
|
||||
|
@ -174,6 +178,7 @@ export default class Websocket {
|
|||
// Notify any of the listeners via the raw socket message callback.
|
||||
this.notifyRawMessageListeners(model);
|
||||
}
|
||||
}
|
||||
|
||||
// Reply to a PING as a keep alive.
|
||||
sendPong() {
|
||||
|
|
Loading…
Reference in a new issue