在Node(wss或ws)中使用sip.js和websockets注册

registration using sip.js and websockets in Node (wss or ws)

本文关键字:sip js 注册 websockets Node wss ws      更新时间:2023-09-26

我正在尝试使用SIP.js和Node注册SIP代理,以开始对我的Kamailio 进行负载测试

Node version v0.10.32

process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0"
global.WebSocket = require('ws')
// SipJS Initialization
var SIP = require('./sip-0.6.0.js');
var Uaconfig = {
        traceSip: true,
        register: true,
        userAgentString: 'sipJS Test tool',
        uri: 'ramenlabs.io',
        wsServers: ['wss://ramenlabs.io:5063'],
        authorizationUser: 'gogasca',
        password: '********'
        //hackIpInContact: true
};
var userAgent = new SIP.UA(Uaconfig);

当我运行时,我得到一个错误:

Thu Oct 16 2014 03:40:53 GMT+0000 (UTC) | sip.transport | WebSocket connection error: Error: unexpected server response (400)

因为Sip.js的初始Websocket缺少Sec-Websocket协议:Sip来指示Sip协议。若我使用示例网页,它可以完美地使用相同的参数,但不是从我的节点命令行。如何强制执行?

在API js中,我确实看到了"sip"额外的头,但包含窗口。Websocket

try {
      this.ws = new window.WebSocket(this.server.ws_uri, 'sip');
    }
    catch(e) {
       this.logger.log('Error connecting to WebSocket ' + this.server.ws_uri + ': ' + e);
       //return false;
    }

您可以在kamailio.cfg中设置debug=3,然后重新启动并重试。然后在syslog文件(/var/log/syslog或/var/log/messages)中查找来自Kamailio的调试消息,看看是否得到了不接受连接原因的提示。