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

WebSocketChannel连接sip.iptel.org服务器无响应问题求助

WebSocket无法接收目标服务器响应问题分析与解决

问题概述

我尝试通过WebSocket服务器接收响应,但仅能看到自己发送给服务器的内容,无法获取服务器应返回的响应。测试代码(非完整)如下:

final wsUrl = Uri.parse('wss://sip.iptel.org:8081/ws');
final channel = WebSocketChannel.connect(wsUrl);

await channel.ready;

channel.stream.listen((message) {
  channel.sink.add('received!');
});

使用wss://echo.websocket.events测试时能正常接收响应,但连接wss://sip.iptel.org:8081/ws时无任何内容返回。

原因分析

wss://sip.iptel.org:8081/ws是SIP-over-WebSocket网关服务器,和普通echo服务器逻辑完全不同:

  • Echo服务器的核心功能是返回收到的所有内容,无需遵循特定协议;
  • SIP网关仅会对符合SIP协议规范的请求做出响应,不会主动推送内容,也不会返回非SIP格式的消息。你的代码目前没有向服务器发送合法的SIP请求,因此服务器没有响应返回。

解决方案

1. 发送符合SIP规范的请求

修改代码,向服务器发送合法的SIP请求(比如REGISTER注册请求),示例如下:

final wsUrl = Uri.parse('wss://sip.iptel.org:8081/ws');
final channel = WebSocketChannel.connect(wsUrl);

await channel.ready;

// 替换为你的本地IP/域名,生成唯一的Call-ID和Tag
final localAddress = '192.168.1.100';
final callId = '${DateTime.now().millisecondsSinceEpoch}@$localAddress';
final fromTag = 'tag-${DateTime.now().microsecondsSinceEpoch}';

// 发送SIP REGISTER请求
channel.sink.add('REGISTER sip:iptel.org SIP/2.0\r\n'
    'Via: SIP/2.0/WSS $localAddress;branch=z9hG4bK-${DateTime.now().millisecondsSinceEpoch}\r\n'
    'Max-Forwards: 70\r\n'
    'To: <sip:test_user@iptel.org>\r\n'
    'From: <sip:test_user@iptel.org>;tag=$fromTag\r\n'
    'Call-ID: $callId\r\n'
    'CSeq: 1 REGISTER\r\n'
    'Contact: <sip:test_user@$localAddress;transport=wss>\r\n'
    'Expires: 3600\r\n'
    '\r\n');

// 监听服务器响应及错误
channel.stream.listen((message) {
  print('服务器响应:\n$message');
}, onError: (error) {
  print('WebSocket错误: $error');
}, onDone: () {
  print('连接已关闭');
});

2. 关键注意事项

  • 替换代码中的localAddress为你的实际本地IP或可访问的域名;
  • Call-ID、From标签(tag)必须保证唯一,避免重复请求被服务器拒绝;
  • SIP请求的格式必须严格遵循RFC 3261规范,尤其是换行符必须使用\r\n,最后以空行结尾。

3. 排查工具

可以使用Wireshark抓包分析WebSocket帧,确认请求是否正确发送,以及服务器是否有返回内容,帮助定位协议格式或连接问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 18:07:36