const express = require('express');
const http = require('http');
const socketio = require('socket.io');
const server = http.createServer(express());
const io = socketio(server);
// 使用默认nsp '/' ,io.on等效于io.of('/');
io.of('/').on('connection', (socket) => {
socket.on('disconnect', function () {
console.log('websocket disconnected');
});
// 对客户发送过来的'message'事件进行处理
socket.on('message', function (msg) {
console.warn('socket.rooms', socket.rooms);
// namespace(nsp) > room > socketid (socketid装入room,room装入nsp)
// 1、向指定的房间('abc')广播消息(包括当前连接的socket客户端)
// io.of('/').to('abc').emit('message', '房间内所有人适用,包括自己');
io.to('abc').emit('message', String(new Date().toLocaleTimeString()) + '房间内所有人适用,包括自己'); //在不知道nsp时默认为'/',与下面的等效
// io.of('/').to('abc').emit('message', String(new Date().toLocaleTimeString()) + '房间内所有人适用,包括自己');
// 2、全局广播消息(不包括当前连接的socket客户端)
// 只有和当前socket同属于一个nsp(默认为'/')的socket客户端才可以收到消息
socket.broadcast.emit('message', String(new Date().toLocaleTimeString()) + '全局广播消息(不包括当前连接的socket客户端)');
//3、 向指定的房间广播信息(不包括当前连接的socket客户端)
// 只有和当前socket同属于一个nsp(默认为'/')下'abc'房间内的socket客户端才可以收到消息
socket.broadcast.to('abc').emit('message', String(new Date().toLocaleTimeString()) + '向指定的房间广播信息(不包括当前连接的socket客户端)');
// 4、向当前连接的socket客户端发送消息(服务端->客户端 或者 客户端->服务端)
socket.emit('message', '服务端->客户端')
// 5、等效于socket.emit('message', '服务端->客户端')
socket.send('服务端->客户端'); //Sends a 'message' event
});
// 加入房间
socket.on('join', room => {
socket.join(room);
socket.emit('joined')
});
// 离开房间
socket.on('leave', room => {
socket.leave(room);
});
});
server.listen(6666);
express使用socket.io 服务端推送消息的几种方式
最新推荐文章于 2024-08-19 16:53:37 发布