修改websocket
This commit is contained in:
parent
028190fc5b
commit
02dd61e073
10
ws/wsConn.go
10
ws/wsConn.go
@ -94,8 +94,14 @@ func (c *wsConnect) close() {
|
|||||||
|
|
||||||
// 循环从websocket中读取消息放入到读队列中
|
// 循环从websocket中读取消息放入到读队列中
|
||||||
func (c *wsConnect) readWsLoop() {
|
func (c *wsConnect) readWsLoop() {
|
||||||
//c.wsConn.SetReadLimit(maxMessageSize)
|
c.wsConn.SetReadLimit(maxMessageSize)
|
||||||
_ = c.wsConn.SetReadDeadline(time.Now().Add(pongWait))
|
_ = c.wsConn.SetReadDeadline(time.Now().Add(pongWait))
|
||||||
|
c.wsConn.SetPongHandler(func(string) error {
|
||||||
|
log.Debug(c.Log("received pong. from client"))
|
||||||
|
_ = c.wsConn.SetReadDeadline(time.Now().Add(pongWait))
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
|
||||||
for {
|
for {
|
||||||
// 读一个message
|
// 读一个message
|
||||||
msgType, data, err := c.wsConn.ReadMessage()
|
msgType, data, err := c.wsConn.ReadMessage()
|
||||||
@ -110,7 +116,7 @@ func (c *wsConnect) readWsLoop() {
|
|||||||
case websocket.PingMessage:
|
case websocket.PingMessage:
|
||||||
_ = c.sendMsg(websocket.PongMessage, []byte("pong"))
|
_ = c.sendMsg(websocket.PongMessage, []byte("pong"))
|
||||||
case websocket.PongMessage:
|
case websocket.PongMessage:
|
||||||
// _ = c.sendMsg(websocket.PingMessage, []byte("ping"))
|
log.Debug(c.Log("received pong from client"))
|
||||||
case websocket.CloseMessage:
|
case websocket.CloseMessage:
|
||||||
code := websocket.CloseNormalClosure
|
code := websocket.CloseNormalClosure
|
||||||
reason := ""
|
reason := ""
|
||||||
|
@ -5,6 +5,7 @@ import (
|
|||||||
"github.com/fox/fox/log"
|
"github.com/fox/fox/log"
|
||||||
"github.com/gorilla/websocket"
|
"github.com/gorilla/websocket"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"runtime"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -56,11 +57,24 @@ func (s *WsServer) wsHandle(w http.ResponseWriter, r *http.Request) {
|
|||||||
wsConn := newWsConnect(conn, s.onDisconnect)
|
wsConn := newWsConnect(conn, s.onDisconnect)
|
||||||
wsMgr.Add(wsConn)
|
wsMgr.Add(wsConn)
|
||||||
log.DebugF("当前连接数:%v", wsMgr.Count())
|
log.DebugF("当前连接数:%v", wsMgr.Count())
|
||||||
|
log.DebugF("新连接id:%v %v", wsConn.Id(), wsConn.Name())
|
||||||
ksync.GoSafe(func() { wsConn.handle(s.onMessage) }, nil)
|
ksync.GoSafe(func() { wsConn.handle(s.onMessage) }, nil)
|
||||||
ksync.GoSafe(wsConn.readWsLoop, nil)
|
ksync.GoSafe(wsConn.readWsLoop, nil)
|
||||||
ksync.GoSafe(wsConn.writeWsLoop, nil)
|
ksync.GoSafe(wsConn.writeWsLoop, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *WsServer) debugGoroutineNum() {
|
||||||
|
ch := time.Tick(5 * time.Minute)
|
||||||
|
go func() {
|
||||||
|
for {
|
||||||
|
select {
|
||||||
|
case <-ch:
|
||||||
|
log.DebugF("当前协程数量:%v", runtime.NumGoroutine())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
|
||||||
func (s *WsServer) Run() {
|
func (s *WsServer) Run() {
|
||||||
router := http.NewServeMux()
|
router := http.NewServeMux()
|
||||||
router.HandleFunc("/", s.wsHandle)
|
router.HandleFunc("/", s.wsHandle)
|
||||||
@ -71,6 +85,7 @@ func (s *WsServer) Run() {
|
|||||||
log.Error(err.Error())
|
log.Error(err.Error())
|
||||||
}
|
}
|
||||||
}, nil)
|
}, nil)
|
||||||
|
s.debugGoroutineNum()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *WsServer) SetUserId(connId uint32, userId int64) {
|
func (s *WsServer) SetUserId(connId uint32, userId int64) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user