File tree Expand file tree Collapse file tree 2 files changed +30
-3
lines changed Expand file tree Collapse file tree 2 files changed +30
-3
lines changed Original file line number Diff line number Diff line change 55package main
66
77import (
8- "github.com/gorilla/websocket "
8+ "bytes "
99"log"
1010"net/http"
1111"time"
12+
13+ "github.com/gorilla/websocket"
1214)
1315
1416const (
@@ -25,6 +27,11 @@ const (
2527maxMessageSize = 512
2628)
2729
30+ var (
31+ newline = []byte {'\n' }
32+ space = []byte {' ' }
33+ )
34+
2835var upgrader = websocket.Upgrader {
2936ReadBufferSize : 1024 ,
3037WriteBufferSize : 1024 ,
@@ -56,6 +63,7 @@ func (c *Conn) readPump() {
5663}
5764break
5865}
66+ message = bytes .TrimSpace (bytes .Replace (message , newline , space , - 1 ))
5967hub .broadcast <- message
6068}
6169}
@@ -77,10 +85,26 @@ func (c *Conn) writePump() {
7785select {
7886case message , ok := <- c .send :
7987if ! ok {
88+ // The hub closed the channel.
8089c .write (websocket .CloseMessage , []byte {})
8190return
8291}
83- if err := c .write (websocket .TextMessage , message ); err != nil {
92+
93+ c .ws .SetWriteDeadline (time .Now ().Add (writeWait ))
94+ w , err := c .ws .NextWriter (websocket .TextMessage )
95+ if err != nil {
96+ return
97+ }
98+ w .Write (message )
99+
100+ // Add queued chat messages to the current websocket message.
101+ n := len (c .send )
102+ for i := 0 ; i < n ; i ++ {
103+ w .Write (newline )
104+ w .Write (<- c .send )
105+ }
106+
107+ if err := w .Close (); err != nil {
84108return
85109}
86110case <- ticker .C :
Original file line number Diff line number Diff line change 3636 appendLog ( $ ( "<div><b>Connection closed.</b></div>" ) ) ;
3737 } ;
3838 conn . onmessage = function ( evt ) {
39- appendLog ( $ ( "<div/>" ) . text ( evt . data ) ) ;
39+ var messages = evt . data . split ( '\n' )
40+ for ( var i = 0 ; i < messages . length ; i ++ ) {
41+ appendLog ( $ ( "<div/>" ) . text ( messages [ i ] ) ) ;
42+ }
4043 } ;
4144 } else {
4245 appendLog ( $ ( "<div><b>Your browser does not support WebSockets.</b></div>" ) ) ;
You can’t perform that action at this time.
0 commit comments