WebSocket 连接错误

617 阅读1分钟

什么是websocket

WebSocket是一种在单个TCP连接上进行全双工通信的协议。

WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

应用场景

在客户端之间可以实现实时通讯,可用于聊天室,多屏互动,心跳检测等互动场景中。

web连接方式

var wsImp = window.WebSocket || window.MozWebSocket || null;
    window.ws = new wsImp('ws://127.0.0.1:11341/');
// 建立连接
ws.onopen = function () {
    var jsonStr = JSON.stringify({"type": "open", "msg": "开启"});
    // 发送信息
    ws.send(jsonStr);
};
// 接收信息
ws.onmessage = function (evt) {
    console.log(evt.data);
};
// 关闭连接
ws.onclose = function () {
};
// 连接错误
ws.onerror = function(event) {
};

小程序连接方式

const io = require('../../utils/weapp.socket.io.js')
socket = io('https://xxxxx',{
    path: '/socketIO'
})
socket.on('connect', () => {
     // 接收信息
     socket.on(key, (data) => {

     });
    // 发送信息 
    socket.emit(key, data)
})

前面文章只是对websocket做了一个简单的介绍和基本的连接方式演示,如果都顺利的话,恭喜你,不需要再往下看了😄。安心在完成你的业务代码就行了。 但现实是往往不是那么顺利,本篇文章主要介绍在连接过程中可能会遇到的问题。

报错信息

VM31670 asdebug.js:1 WebSocket connection to 'wss://XXX/socketIO/?EIO=3&transport=websocket' failed: Invalid frame header(env: macOS,mp,1.05.2204250; lib: 2.19.4)

此类报错主要是由于客户端和服务端引入的socket.io的版本不一致导致的. 待续...