From 6945fc8532116907334dd47662ea6e19eedead4d Mon Sep 17 00:00:00 2001 From: boyce Date: Thu, 14 Feb 2019 16:48:30 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4websocket=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=9B=9E=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- network/websocketserver.go | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/network/websocketserver.go b/network/websocketserver.go index 4bfe7fc..5ad3faf 100644 --- a/network/websocketserver.go +++ b/network/websocketserver.go @@ -17,9 +17,10 @@ type IWebsocketServer interface { } type IMessageReceiver interface { - OnConnected(webServer IWebsocketServer, clientid uint64) - OnDisconnect(webServer IWebsocketServer, clientid uint64, err error) - OnRecvMsg(webServer IWebsocketServer, clientid uint64, msgtype int, data []byte) + OnListen(webServer IWebsocketServer) + OnConnected(clientid uint64) + OnDisconnect(clientid uint64, err error) + OnRecvMsg(clientid uint64, msgtype int, data []byte) } type WSClient struct { @@ -56,7 +57,8 @@ func (slf *WebsocketServer) wsHandler(w http.ResponseWriter, r *http.Request) { slf.maxClientid++ pclient := &WSClient{slf.maxClientid, conn, make(chan WSMessage, 1024)} slf.mapClient[pclient.clientid] = pclient - slf.messageReciver.OnConnected(slf, pclient.clientid) + + slf.messageReciver.OnConnected(pclient.clientid) go pclient.startSendMsg() go slf.OnConnected(pclient) } @@ -69,11 +71,11 @@ func (slf *WebsocketServer) OnConnected(pclient *WSClient) { slf.locker.Lock() defer slf.locker.Unlock() delete(slf.mapClient, pclient.clientid) - slf.messageReciver.OnDisconnect(slf, pclient.clientid, err) + slf.messageReciver.OnDisconnect(pclient.clientid, err) return } - slf.messageReciver.OnRecvMsg(slf, pclient.clientid, msgtype, message) + slf.messageReciver.OnRecvMsg(pclient.clientid, msgtype, message) } } @@ -99,11 +101,13 @@ func (slf *WebsocketServer) startListen() { MaxHeaderBytes: 1 << 20, } + slf.messageReciver.OnListen(slf) err := slf.httpserver.ListenAndServe() if err != nil { fmt.Printf("http.ListenAndServe(%d, nil) error\n", slf.port) os.Exit(1) } + } func (slf *WSClient) startSendMsg() {