【问题标题】:Listening websocket in MVC在 MVC 中监听 websocket
【发布时间】:2014-12-08 12:59:36
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

    您可以将该对象设置为 Global 类中的成员,然后在 Application_End 事件中处理它。

    更新

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

    【讨论】:

    • 感谢您的回复。我把server 作为全局静态变量。然后当我从浏览器控制台测试时,连接时超时。
    猜你喜欢
    • 2022-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-05
    • 2021-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多