服务端
- 在Koa2中安装koa-socket模块
cnpm i -S koa-socket
- 在Koa项目中引入koa-socket
const IO = require( 'koa-socket' )
- 实例化const io = new IO()
const io = new IO()
- 调用 io.attach( app )
io.attach( app )
- 配置服务端
app._io.on( 'connection', socket => {
console.log('建立连接了');
let roomid=url.parse(socket.request.url,true).query.roomid; /*获取房间号/ 获取桌号需要引入url模块*/
socket.join(roomid); /*加入房间/加入分组*/
socket.on('message',function(data){
console.log(data);
//socket.emit('serverEmit','我接收到消息了'); /*发给指定用户*/
//app._io.emit('serverEmit','我接收到消息了'); /*广播*/
//app._io.to(roomid).emit('serverEmit','我接收到消息了'); 发送给房间内的所有人
socket.broadcast.to(roomid).emit('serverEmit','我接收到消息了');/*发送给除了自己以外房间内的所有人*/
})
})
//监听用户断开连接
socket.on('disconnect', data=>{
});
客户端
- 引入socket.io.js
<script src="/socket.io/socket.io.js"></script>
- 和服务器建立长连接
let socket = io.connect(ws://192.168.0.3:3000?roomid=1');
- 接收服务器返回的信息
socket.on('serverEmit',function(data){
console.log(data);
});
- 主动向服务端发送消息
socket.on('serverEmit',function(data){
socket.emit('message','message');
});