node创建websocket服务端

//引入ws模块
var WebSocket = require('ws');
//创建websocket
var wss = new WebSocket.Server({
    port: 12345
})
//声明客户端客户ID默认为0
var 客户ID = 0;
//服务端连接
wss.on('connection', (ws)=> {
    //每连接一个用户,客户端ID+1
    客户ID++;
    //为客户端添加自定义属性:客户ID
    ws.客户ID = 客户ID;
    //收到了数据
    ws.on('message', function(message) {
        let 收到的数据 = ArrayBufferUTF8ToStr(message);
    });
 
    //每隔固定的时间 服务器给全部客户端发送ping消息
    let 定时ping = setInterval(() => {
        wss.clients.forEach(当前客户 => {
            当前客户.ping("ping",false,()=>{
                console.log("已发送ping")
            })
        });
    }, 10000);
 
    ws.on('close', ()=> {
        clearInterval(定时ping);//取消当前客户的定时ping
    });

});

//编码转换
const ArrayBufferUTF8ToStr = (array)=> {
    var out,i,len,c;
    var char2,char3;
    if (array instanceof ArrayBuffer) {
        array = new Uint8Array(array);
    }
    out = "";
    len = array.length;
    i = 0;
    while(i < len) {
        c = array[i++];
        switch(c >> 4) {
            case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7:
                // 0xxxxxxx
                out += String.fromCharCode(c);
                break;
            case 12: case 13:
                // 110x xxxx   10xx xxxx
                char2 = array[i++];
                out += String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F));
                break;
            case 14:
                // 1110 xxxx  10xx xxxx  10xx xxxx
                char2 = array[i++];
                char3 = array[i++];
                out += String.fromCharCode(((c & 0x0F) << 12) |
                    ((char2 & 0x3F) << 6) |
                    ((char3 & 0x3F) << 0));
                break;
        }
    }
    return out;
}

参考api:使用ws模块实现Node版WebSocket服务器 - 知乎

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue 是一个前端框架,无法直接创建 WebSocket 服务端WebSocket 是一种双向通信协议,可以用于客户端和服务端之间的实时通信。要创建 WebSocket 服务端,需要使用后端语言和框架,例如 Node.js 和 Socket.io。 在 Node.js 中,可以使用 `ws` 模块来创建 WebSocket 服务端。以下是一个简单的示例: ```javascript const WebSocket = require('ws'); const server = new WebSocket.Server({ port: 8080 }); server.on('connection', function connection(ws) { ws.on('message', function incoming(message) { console.log('received: %s', message); }); ws.send('Hello, client!'); }); ``` 上面的代码创建了一个 WebSocket 服务端,监听 8080 端口。当有客户端连接时,会触发 `connection` 事件,并向客户端发送一条消息。当客户端发送消息时,会触发 `message` 事件,并在控制台输出收到的消息。 如果你想在 Vue 中使用 WebSocket 实现实时通信,可以在 Vue 组件中使用 `WebSocket` 对象来连接 WebSocket 服务端,并监听 `onmessage` 事件来处理收到的消息。例如: ```javascript export default { data() { return { ws: null, message: '', }; }, mounted() { this.ws = new WebSocket('ws://localhost:8080'); this.ws.onmessage = (event) => { this.message = event.data; }; }, methods: { sendMessage() { this.ws.send(this.message); }, }, }; ``` 上面的代码在 Vue 组件中创建了一个 WebSocket 对象,并在 `mounted` 钩子函数中监听 `onmessage` 事件。当收到消息时,会将消息赋值给 `message` 数据。组件中还有一个 `sendMessage` 方法,用于向 WebSocket 服务端发送消息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值