在 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;
        }
    }
}

在 MVC 中侦听 websocket

看起来一旦

Application_Start方法结束,WebSocketServer就会超出范围并最终进行垃圾回收。

例如,可以将该对象设置为 Global 类中的成员,并在 Application_End 事件上释放它。

更新:

您还在使用 wss 架构,但不提供任何证书配置。请注意,IIS 和 Fleck 是两个不同的东西,它们在不同的端口中运行,并不是因为您在 ASP.NET 应用程序中创建了 Fleck,就意味着 Fleck 将推断 SSL/TLS 配置或任何配置。尝试将架构设置为ws,然后打开没有HTTPS的页面,看看它是否有效。