在MVC中监听websocket

时间:2014-12-08 12:59:36

标签: javascript c# asp.net-mvc asp.net-mvc-4 websocket

我正在使用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;
        }
    }
}

1 个答案:

答案 0 :(得分:0)

看起来只要Application_Start方法结束,WebSocketServer就会超出范围并最终收集垃圾。

您可以将该对象设置为Global类中的成员,并将其置于Application_End事件中。例如。

<强>更新

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