You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于TcpListener的WebSocket服务器连接失败问题排查

WebSocket连接失败&业务数据接收问题排查(C#场景)

核心排查点

1. 端口权限与监听状态

  • 443是系统保留端口,控制台程序需以管理员身份运行才能绑定该端口,否则会出现绑定失败(需捕获SocketException确认,部分场景可能无显性异常)。
  • 用netstat -ano | findstr 443命令验证端口是否被目标进程占用,或在代码中添加启动日志确认TcpListener/HttpListener是否成功启动。

2. SSL与协议匹配问题

  • 若客户端使用wss://协议连接443端口,服务器必须配置SSL证书:
    • TcpListener需自行实现SSL握手(复杂度高,不推荐);
    • HttpListener需先通过netsh http add sslcert命令将证书绑定到443端口,监听前缀设为https://192.168.5.73:443/;
  • 若服务器未配置SSL,客户端必须使用ws://协议,且客户端页面需为HTTP(HTTPS页面中浏览器会阻止非加密WebSocket连接,报混合内容错误)。

3. WebSocket握手响应正确性

即使生成了Sec-WebSocket-Accept,仍需确保响应完全符合规范:

  • 状态码必须是101 Switching Protocols;
  • 响应头必须包含:
    Connection: Upgrade
    Upgrade: websocket
    Sec-WebSocket-Accept: [你的计算值]
    
  • 响应格式必须正确:头与头之间用\r\n分隔,末尾需添加**两个连续的\r\n**以结束响应头部分,否则客户端会认为响应不完整,终止连接。

4. 业务数据的帧解析问题

WebSocket握手完成后,客户端发送的msg=US是文本帧格式,而非HTTP参数:

  • 用TcpListener时,需自行实现WebSocket帧的解析(解析opcode、掩码、payload长度等),不能直接读取明文;
  • 用HttpListener时,需通过HttpListenerContext.AcceptWebSocketAsync()获取WebSocket对象,再调用ReceiveAsync方法接收帧数据,示例代码片段:
    var webSocketContext = await context.AcceptWebSocketAsync(subProtocol: null);
    var webSocket = webSocketContext.WebSocket;
    var buffer = new ArraySegment<byte>(new byte[1024]);
    var result = await webSocket.ReceiveAsync(buffer, CancellationToken.None);
    if (result.MessageType == WebSocketMessageType.Text)
    {
        string message = Encoding.UTF8.GetString(buffer.Array, 0, result.Count);
        // 处理msg=US业务数据
    }
    
    若仅停留在HttpListener处理HTTP请求的阶段,无法获取后续的WebSocket帧数据。

5. Sec-WebSocket-Accept生成正确性

验证生成逻辑是否严格遵循规范:

  1. 拼接客户端发送的Sec-WebSocket-Key与固定GUID字符串258EAFA5-E914-47DA-95CA-C5AB0DC85B11;
  2. 对拼接后的字符串做SHA1哈希计算;
  3. 将哈希结果转为Base64编码。
    错误示例:使用ASCII编码而非UTF8、拼接时遗漏GUID、哈希算法错误等,都会导致客户端验证失败。

6. 客户端连接地址与错误日志

  • 确认客户端连接地址与服务器监听地址完全匹配(包括协议、IP、端口);
  • 查看Chrome控制台的具体错误信息:按F12打开DevTools,切换到Console/Network标签,WebSocket连接失败会给出明确错误(如SSL协议错误、握手响应码错误、连接被拒绝等),可精准定位问题。

内容的提问来源于stack exchange,提问作者SPlatten

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 05:27:46