SocketIoClientDotNet - Socket.IO Client Library有时会发出两个连续事件,有时不会发出

时间:2017-10-23 13:15:15

标签: c# .net node.js socket.io

我正在使用SocketIoClientDotNet - .Net的Socket.IO客户端库,我试图一个接一个地发出两个事件。有时它会发出两个事件,有时它只会发出第一个事件。以下是我的代码:

StoreKit

当我重启我的nodejs服务器时,重启后发送之前未发出的所有第二个事件。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

我遇到过类似的问题,这是因为为socket对象创建的实例。首先,当我在两个不同的浏览器中打开相同的应用程序时,我使用单例模式来获取导致我问题的套接字对象的实例。所以我尝试使用session来保持我的套接字对象,而不是有多个套接字对象。尝试使用对象的会话而不是创建两个不同的实例。希望它有所帮助!

答案 1 :(得分:0)

我通过在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();
});

不过,我有一个问题是事件有任何延迟。