使用NodeJs怎么模仿SIP话机注册

  介绍

这篇文章将为大家详细讲解有关使用NodeJs怎么模仿SIP话机注册,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

项目依赖模块:

<李>

NodeJs

<李>

readline:命令行输入

<李>

ws:与服务端建立websocket连接

<李>

搞:与服务端建立请求连接,效果类似ajax请求

<李>

tsk_md5:项目登录密码使用MD5加密

<强>项目需求

模拟SIP话机频繁向服务器发起注册请求,以得到服务器最大SIP注册数

<强>项目实现概述

<李>

终端输入连续注册分机的开始分机号和结束分机号

<李>

终端输入统一的SIP注册密码

<李>

终端输入服务器地址

<李>

先进行用户登录鉴权,用户登录鉴权通过后再发起SIP注册

<强>代码分析

1。引入项目所需模块

var  WebSocket =,要求(& # 39;ws # 39;),=,superagent 要求(& # 39;搞# 39;),=,tskMD5 要求(& # 39;。/tsk_md5& # 39;)   ,const  readline =,要求(& # 39;readline # 39;);

2。创建readline接口实例

const  rl =, readline.createInterface ({   输入:,,,,process.stdin,   输出:,,,,process.stdout,   ,,,提示:,& # 39;OHAI>, & # 39;   以前,});

3。定义所需变量

var  obj =, {},, httpHeader =, {},, baseUrl =& # 39; & # 39;, pass =, & # 39; & # 39;, ip =, & # 39; & # 39;, websocketUrl =, & # 39; & # 39;   var  keepWsAlive, readyState

4。读取readline输入信息函数

function  getReadline (), {   ,const  lines =,[];,//,用于保存所有输入信息。   ,console.log (& # 39; Please  input 从而range  of 扩展(如:1001、1010):\ n # 39;)   ,rl.on (“line",函数(线),{   if 才能;(line ===& # 39; & # 39;), {   ,,console.log(& # 39;从而input  is 空,,please  input : \ n # 39;)   ,,},{else    ,,lines.push(线);   ,,if  (lines.length ===, 1), {   ,,,obj.extensionsArr =, line.split (& # 39; & # 39;);   ,,,console.log (& # 39; Please  input 从而密码(如:1234 aa): \ n # 39;)   ,,},else  if  (===lines.length  2), {   ,,,obj.password =,行;   ,,,pass =,行;   ,,,console.log (& # 39; Please  input 从而ip(如:192.168.124.125):\ n # 39;)   ,,},else  if  (===lines.length  3), {   ,,,websocketUrl =, & # 39; ws://& # 39;, +, line  +, & # 39;: 8089/ws # 39;;   ,,,obj.websocketUrl =, websocketUrl;   ,,,obj.ip =,行;   ,,,ip =,行;   ,,,console.log (& # 39; Starting 注册…\ n # 39;);   ,,,//,开始注册事件   ,,,loopRegister (obj),   ,,}   ,,}   ,});   ,   ,//近事件监听   ,rl.on (“close",,函数(){//,才能结束程序   process.exit才能(0);   ,});   以前,}

终端运行截图

使用NodeJs怎么模仿SIP话机注册”>,</p> <p> 5。注册事件中包含几个动作</p> <p> 1)设置httpHeader:浏览器与服务器ajax请求有固定的请求头信息,此处模拟浏览器的请求头信息。</p> <p>用于后续发送请求进行用户登录鉴权。</p> <pre类= function  setHttpHeader(用户名),{   httpHeader 才能=,{   ,才能接受:& # 39;application/json, text/javascript, */*;, q=0.01 & # 39;   ,,& # 39;Accept-Encoding& # 39;:, & # 39; gzip、,缩小# 39;   ,,& # 39;接收语言# 39;:,& # 39;应用,zh型;q=0.9, en; q=0.8, pt; q=0.7 & # 39;   ,,& # 39;cache - control # 39;:, & # 39; no - cache # 39;   ,,,连接:& # 39;保活# 39;   ,,& # 39;内容类型# 39;:,& # 39;应用程序/x-www-form-urlencoded;, charset=utf - 8 # 39;   ,,,饼干:& # 39;TRACKID=& # 39; + TRACKID + & # 39;;, session-identify=sid121076289 - 1520217430;,用户名=admin;, user_id=0 & # 39;   ,,,主持人:ip  + & # 39;: 8089 & # 39;   ,,,产地:& # 39;http://& # 39; + ip + & # 39;: 8089 & # 39;   ,才能编译指示:& # 39;no - cache # 39;   ,,,推荐人:& # 39;http://& # 39; + ip + & # 39;: 8089/gswave/& # 39;   ,,& # 39;用户代理# 39;:,& # 39;Mozilla/5.0, (Windows  NT  6.1;, WOW64), AppleWebKit/537.36, (KHTML, like 壁虎),Chrome/38.0.2125.122  Safari/537.36, SE  2. x  MetaSr  1.0 & # 39;   ,,& # 39;X-Requested-With& # 39;: & # 39; xmlhttprequest # 39;   ,,}   var 才能;accountData =, {   ,才能行动:& # 39;挑战# 39;   ,,用户:用户名   ,,}   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

使用NodeJs怎么模仿SIP话机注册