我们在我们的游戏中使用了Pomelo来建立网络。Unity客户端注册了一些广播事件,在极少数情况下,unity客户端接收不到广播消息。但是消息是从服务器广播的。
我尝试将日志放在PomeloClient的SocketMessage方法中,但没有打印日志。如果任何人对这个问题有任何线索或建议,请回复。
/// <summary>
/// When message from server comes, it invoke.
/// </summary>
/// <param name='sender'>
/// Sender.
/// </param>
/// <param name='e'>
/// E.
/// </param>
private void SocketMessage (object sender, MessageEventArgs e) {
UnityEngine.Debug.Log("Unfiltered Message from server :" + e.Message);
if ( e!= null && e.Message.Event == "message") {
string msg = e.Message.MessageText;
if (msg.IndexOf(ARRAY_FLAG) == 0) {
this.processMessageBatch(msg);
} else {
this.processMessage(msg);
}
}
}发布于 2015-08-26 16:46:40
尝试:https://github.com/kaistseo/UnitySocketIO-WebSocketSharp
使用websocket-sharp代替WebSocket4Net的UnitySocketIO
UnitySocketIO是unity3d的唯一可用的socket.io客户端,但它使用WebSocket4Net和SuperSocket.ClientEngine作为底层库,这两个库有一定的缺陷和不稳定。有时,即使客户端已从服务器接收到消息包,也不会调用MessageReceived事件处理程序,消息会被静默丢弃。当UnitySocketIO使用的WebSocket4Net库被websocket-sharp取代时,这个问题就解决了。UnitySocketIO使用的SimpleJson库已更新到最新版本(v0.30.0),因为旧的库在某些情况下会导致崩溃。
https://stackoverflow.com/questions/26970135
复制相似问题