1 选择合适的库
目前,ws库,使用最接近前端的Websocket
类,可以避免一些API不同产生的问题。
基本模型:
const WebSocket = require('ws');
const ws = new WebSocket('wss://web.im.weibo.com/im', [], {
headers: {}
});
ws.on('error', function (err) {
console.error('Catched Websocket Error', err);
});
ws.on('close', function () {
console.warn('Websocket Connection closed');
});
ws.on('open', function () {
console.log(`Websocket Connection opened`);
});
ws.on('message', function (msg) {
console.log('Received message:', msg);
ws.send(`Auto Reply: You say ${msg}`);
});
2 使用抓包工具探测websocket链接
使用Chrome开发者工具即可。
3 让程序模拟headers
const ws = new WebSocket('wss://web.im.weibo.com/im', [], {
headers: {
// 保持和抓包结果一致
}
});
*4 模拟初始化过程
一般抓包时可以看到,ws链接建立后,会进行一系列一次性的会话,一般在这里进行了握手,确定了用户信息和一些初始配置。
模拟时应注意模仿这些初始化过程。
*5 模拟心跳
成熟的ws链接一般带有心跳检测,每隔一定时间,服务端和客户端进行一次会话,确认客户端仍可正常回应,否则服务端立刻断开链接。
模拟时应注意模仿,否则模拟客户端不能持久存在。
网友评论