Last active
September 30, 2017 06:50
-
-
Save Fullstop000/1c6cc2ac4d54c64fb983df007ac4a1aa to your computer and use it in GitHub Desktop.
Websocket client & server
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const url = 'ws://localhost:1234' | |
let ws = new WebSocket(url,'test_protocol') | |
ws.onopen = () => { | |
console.log('Client connection opened') | |
ws.send('Hello Websocket') | |
} | |
ws.onmessage = (event) => { | |
console.log('Received message : '+ event.data) | |
} | |
ws.onclose = () => { | |
console.log('Close ws') | |
} | |
ws.onerror = (event) => { | |
console.log('Error : ', event) | |
ws.close() | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package main | |
import ( | |
"net/http" | |
"time" | |
"github.com/gorilla/websocket" | |
logging "github.com/op/go-logging" | |
) | |
var upgrader *websocket.Upgrader | |
var logger *logging.Logger | |
func init() { | |
logger = logging.MustGetLogger("main") | |
logging.SetLevel(logging.INFO, "main") | |
upgrader = &websocket.Upgrader{ | |
HandshakeTimeout: 5 * time.Second, | |
Subprotocols: []string{"test_protocol"}, | |
CheckOrigin: func(r *http.Request) bool { | |
return true | |
}, | |
} | |
} | |
func websocketHandler(w http.ResponseWriter, r *http.Request) { | |
conn, err := upgrader.Upgrade(w, r, nil) | |
if err != nil { | |
logger.Errorf("Websocket upgrade err : %s", err.Error()) | |
return | |
} | |
defer func(conn *websocket.Conn) { | |
err := conn.Close() | |
if err != nil { | |
logger.Errorf("Error closing websocket connection : %s", err.Error()) | |
} | |
logger.Info("Connection closed") | |
}(conn) | |
for { | |
messageType, message, err := conn.ReadMessage() | |
if err != nil { | |
logger.Errorf("Error reading messages from client : %s", err.Error()) | |
break | |
} | |
logger.Infof("Received message : %s", string(message[:])) | |
err = conn.WriteMessage(messageType, []byte("Websocket server")) | |
if err != nil { | |
logger.Errorf("Error writing messages : %s", err.Error()) | |
break | |
} | |
logger.Info("Send message : Websocket server") | |
if string(message[:]) == "close ws" { | |
break | |
} | |
} | |
} | |
func main() { | |
http.HandleFunc("/", websocketHandler) | |
logger.Fatal(http.ListenAndServe(":1234", nil)) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment