流加锁,包不用加锁
传输层的TCP是基于流的传输,需要加锁,
应用层的WebSocket是基于包的传输,同时写也不会导致数据混乱,不需要加锁。
所以,在*websocket.Conn.WriteJSON(data)时,不需要前后加锁
以下代码中的mutex.Lock()没必要:
wsc.mutex.Lock() //由于websocket不支持并发写入,所以需要在写消息的地方都需加上互斥锁,不要则会报错:concurrent write to websocket connection go 这个说法不对,ws支持并发??【有空自己测一下】
wsc.conn.WriteJSON(sdata) //WriteJSON和WriteMessage区别?WriteJSON相当于在原基础上序列化了,人眼可见的形式。
// wsc.conn.WriteMessage(1, sdata) //
wsc.mutex.Unlock() //对c对象上的mutex进行解锁。
</details>