SocketIoClientDotNet – Socket.IO客户端库有时会发出两个连续的事件,有时不会
我正在使用SocketIoClientDotNet – .Net的Socket.IO客户端库,我试图一个接一个地发出两个事件。 有时它发出这两个事件,有时它只发出第一个。 以下是我的代码:
socketModel sm = new socketModel(); sm.CHANNEL = "channel_" + cHAT_MESSAGES.SENDER_ID + cHAT_MESSAGES.RECEIVER_ID; sm.DATA = chatMessageModelObj; string serializedData = Newtonsoft.Json.JsonConvert.SerializeObject(sm); var socket = IO.Socket(ConfigurationManager.AppSettings["socketlink"].ToString()); socket.On(Socket.EVENT_CONNECT, () => { socket.Emit("apimessage", serializedData); }); socket.On("apimessage", (data) => { Console.WriteLine(data); socket.Disconnect(); }); socketModel smSecond = new socketModel(); smSecond.CHANNEL = "messagecount_" + userID; if (updateCount == null) { smSecond.DATA = 0; } else { smSecond.DATA = updateCount.Count(); } string serializedDataSecond = Newtonsoft.Json.JsonConvert.SerializeObject(smSecond); socket.On(Socket.EVENT_CONNECT, () => { socket.Emit("apimessage", serializedDataSecond); }); socket.On("apimessage", (data) => { Console.WriteLine(data); socket.Disconnect(); });
当我重新启动我的nodejs服务器时,之前没有发出的所有第二个事件在重新启动后被发送。 任何帮助将不胜感激。
我遇到类似的问题,这是因为为socket对象创build的实例。 首先,我使用单例模式来获取导致我问题的套接字对象的实例,当我在两个不同的浏览器中打开相同的应用程序。 所以我尝试了使用会话保持我的套接字对象,而不是有多个套接字对象。 尝试使用会话的对象,而不是创build两个不同的实例。 希望能帮助到你!
一旦EVENT_CONNECT()
成功连接,我就解决了这个问题。
socketModel sm = new socketModel(); sm.CHANNEL = "channel_" + cHAT_MESSAGES.SENDER_ID + cHAT_MESSAGES.RECEIVER_ID; sm.DATA = chatMessageModelObj; string serializedData = Newtonsoft.Json.JsonConvert.SerializeObject(sm); socketModel smSecond = new socketModel(); smSecond.CHANNEL = "messagecount_" + cHAT_MESSAGES.RECEIVER_ID; if (updateCount == null) { smSecond.DATA = 0; } else { smSecond.DATA = updateCount.Count(); } string serializedDataSecond = Newtonsoft.Json.JsonConvert.SerializeObject(smSecond); var socket = IO.Socket(ConfigurationManager.AppSettings["socketlink"].ToString()); socket.Once(Socket.EVENT_CONNECT, () => { socket.Emit("apimessage", serializedData); socket.Emit("apimessage", serializedDataSecond); }); socket.Once("apimessage", () => { socket.Disconnect(); });
不过,我还有一个问题,是否有任何延误事件。
- build立一个Web服务以供多个平台使用 – 我应该使用什么格式?
- 操作系统升级后,无法在OSX El Capitan上启动NodeJS应用程序(Appium)
- JCommander / NPM指挥官像C#库?
- 将轻量级Web服务器embedded到.net应用程序(node.js)中?
- unity3d可以用socket.io工作吗?
- node.js / V8replace.NET或Java?
- 如何从c#(.net 3.5)连接node.js服务器
- Javascriptdependency injection和节点中的DIP:require vs构造函数注入
- AES在.NET中encryption并使用Node.jsencryption解密?