gpt4 book ai didi

c# - .NET 4.5 中的 HttpListener 无法将套接字识别为 WebSocket

转载 作者:行者123 更新时间:2023-11-29 22:06:37 26 4
gpt4 key购买 nike

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

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

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

listenerContext.Request.IsWebSocketRequest

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

我的客户端代码:

<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();
}
}
}

最佳答案

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

关于c# - .NET 4.5 中的 HttpListener 无法将套接字识别为 WebSocket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20662043/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com