我正在使用MVC 4.我有一个需要在Websockets的帮助下与服务器通信的js代码。我在服务器上使用Fleck。我正在Application_Start
事件中创建套接字服务器。但是,当我从浏览器控制台尝试连接时,出现Connection refused
等错误。
这是我的global.asax
代码。
protected void Application_Start()
{
IPAddress ip = null;
if (GetResolvedConnecionIPAddress(out ip)) // Get host ip
{
string Domain = "wss" + System.Uri.SchemeDelimiter + ip + ":" + "8092";
FleckLog.Level = Fleck.LogLevel.Debug;
try
{
if (GetResolvedConnecionIPAddress(out ip))
{
var server = new WebSocketServer(Domain);
server.Start(socket =>
{
LogWriter.Logger.Info("WS: Inside socket server");
socket.OnOpen = () =>
{
LogWriter.Logger.Info("WS: OnOpen socket");
};
socket.OnClose = () =>
{
LogWriter.Logger.Info("WS: OnClose socket");
};
socket.OnMessage = message =>
{
LogWriter.Logger.Info("WS: OnMsg socket");
};
});
}
}
catch (Exception e)
{
throw;
}
}
}
答案 0 :(得分:0)
看起来只要Application_Start
方法结束,WebSocketServer
就会超出范围并最终收集垃圾。
您可以将该对象设置为Global
类中的成员,并将其置于Application_End
事件中。例如。
<强>更新强>:
您还使用wss
架构,但未提供任何证书配置。请注意,IIS和Fleck是两个不同的东西,它们运行在不同的端口,而不是因为您在ASP.NET应用程序中创建Fleck意味着Fleck将推断SSL / TLS配置或任何配置。尝试将架构设置为ws
,然后打开没有HTTPS的页面,看看它是否有效。