From d15681a1fdf0f1f386152cc15588316a4ff47148 Mon Sep 17 00:00:00 2001 From: boyce Date: Tue, 2 Apr 2019 15:24:17 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=93=E5=8D=B0=E7=B3=BB=E7=BB=9Fwebsocet?= =?UTF-8?q?=E8=BF=9E=E6=8E=A5=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- network/websocketserver.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/network/websocketserver.go b/network/websocketserver.go index dfdf9e4..bbf8044 100644 --- a/network/websocketserver.go +++ b/network/websocketserver.go @@ -70,6 +70,10 @@ type WebsocketServer struct { iswss bool } +const ( + MAX_MSG_COUNT = 4096 +) + func (slf *WebsocketServer) Init(port uint16) { slf.port = port @@ -80,10 +84,11 @@ func (slf *WebsocketServer) CreateClient(conn *websocket.Conn) *WSClient { slf.locker.Lock() slf.maxClientid++ clientid := slf.maxClientid - pclient := &WSClient{clientid, conn, make(chan WSMessage, 1024)} + pclient := &WSClient{clientid, conn, make(chan WSMessage, MAX_MSG_COUNT)} slf.mapClient[pclient.clientid] = pclient slf.locker.Unlock() + service.GetLogger().Printf(sysmodule.LEVER_INFO, "Client id %d is connected.", clientid) return pclient } @@ -94,6 +99,7 @@ func (slf *WebsocketServer) ReleaseClient(pclient *WSClient) { slf.locker.Unlock() //关闭写管道 close(pclient.bwritemsg) + service.GetLogger().Printf(sysmodule.LEVER_INFO, "Client id %d is disconnected.", pclient.clientid) } func (slf *WebsocketServer) SetupReciver(pattern string, messageReciver IMessageReceiver, bEnableCompression bool) { @@ -157,6 +163,11 @@ func (slf *WebsocketServer) SendMsg(clientid uint64, messageType int, msg []byte return false } + if len(value.bwritemsg) >= MAX_MSG_COUNT { + service.GetLogger().Printf(sysmodule.LEVER_ERROR, "message chan is full :%d\n", len(value.bwritemsg)) + return false + } + value.bwritemsg <- WSMessage{messageType, msg} return true