在 MVC 中侦听 websocket
本文关键字:websocket MVC | 更新日期: 2023-09-27 18:33:27
我正在使用MVC 4。我有一个 js 代码,需要在 Websockets 的帮助下与服务器通信。我在服务器上使用 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;
}
}
}
看起来一旦
Application_Start
方法结束,WebSocketServer
就会超出范围并最终进行垃圾回收。
例如,可以将该对象设置为 Global
类中的成员,并在 Application_End
事件上释放它。
更新:
您还在使用 wss
架构,但不提供任何证书配置。请注意,IIS 和 Fleck 是两个不同的东西,它们在不同的端口中运行,并不是因为您在 ASP.NET 应用程序中创建了 Fleck,就意味着 Fleck 将推断 SSL/TLS 配置或任何配置。尝试将架构设置为ws
,然后打开没有HTTPS的页面,看看它是否有效。