【问题标题】:HttpListener from .NET 4.5 doesn't recognize socket as WebSocket.NET 4.5 中的 HttpListener 无法将套接字识别为 WebSocket
【发布时间】:2014-01-06 20:40:27
【问题描述】:

从 .NET 4.5 FW 开始,内置了对 WebSockets 处理的支持。

http://msdn.microsoft.com/en-us/library/system.net.websockets.websocket(v=vs.110).aspx

在 JS 中创建 WebSocket() 实例的定义很简单。 另外...使用 .NET 4.5 在 C# 中处理 WebSocket 请求的方法也很简单... 所以我不明白为什么在服务器端代码中传入的数据包不对应:

listenerContext.Request.IsWebSocketRequest

它会响应 400 代码(在 else 块中)。

我的客户代码:

<script>
    function connect() {
        var ws = new WebSocket("ws://localhost:80/wsDemo/");
        ws.onopen = function () {
            alert("About to send data");
            ws.send("Hello World");
            alert("Message sent!");
        };

        ws.onmessage = function (evt) {
            alert("About to receive data");
            var received_msg = evt.data;
            alert("Message received = "+received_msg);
        };
        ws.onclose = function () { alert("Connection is closed..."); };
    };

    window.load = connect;

</script>

服务器端代码:

    public async void Start(string listenerPrefix)
    {
        HttpListener listener = new HttpListener();
        listener.Prefixes.Add(listenerPrefix);
        listener.Start();
        Console.WriteLine("Listening...");

        while (true)
        {
            HttpListenerContext listenerContext = await listener.GetContextAsync();
            if (listenerContext.Request.IsWebSocketRequest)
            {
                ProcessRequest(listenerContext);
            }
            else
            {
                listenerContext.Response.StatusCode = 400;
                listenerContext.Response.Close();
            }
        }
    }

【问题讨论】:

    标签: c# javascript websocket .net-4.5 httplistener


    【解决方案1】:

    您正在运行什么操作系统和浏览器?接受 WebSocket 请求需要 Windows 8(或 Server 2012)或更高版本。

    【讨论】:

    • 最后一个 Chrome 版本,以及办公室的 Windows 7 :((家里的 Windows 8.1),是的,是正确的......我的误解是,我认为只需要最后一个 .net fw。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2015-02-05
    • 1970-01-01
    • 2014-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-09
    相关资源
    最近更新 更多