参考资料:https://www.npmjs.com/package/socket.io
第一种方式: 基于http
const server = require('http').createServer();
const io = require('socket.io')(server);
io.on('connection', client => {
client.on('event', data => { /* … */ });
client.on('disconnect', () => { /* … */ });
});
server.listen(3000);
第二种方式:独立的
const io = require('socket.io')();
io.on('connection', client => { ... });
io.listen(3000);
第三种方式:基于 express
const app = require('express')();
const server = require('http').createServer(app);
const io = require('socket.io')(server);
io.on('connection', () => { /* … */ });
server.listen(3000);
第四种方式:基于 koa
const app = require('koa')();
const server = require('http').createServer(app.callback());
const io = require('socket.io')(server);
io.on('connection', () => { /* … */ });
server.listen(3000);
公共的API:
io.on('connection', socket => {
socket.emit('request', /* … */); // emit an event to the socket
io.emit('broadcast', /* … */); // emit an event to all connected sockets
socket.on('reply', () => { /* … */ }); // listen to the event
});
note:
io.emit 是广播消息 (即所有用户)
socket.emit 是发送给当前用户
const http = require('http');
const ws = require('socket.io');
/**********************************************************/
//第一种搭建方式: 基于http
// const server = http.createServer(function (req,res){});
// const io = ws(server);
// io.on('connection',socket=>{
// debugger
// console.log('当前有用户连接 socket connection ');
// socket.on('event',data=>{
// console.log('event',data);
// });
// socket.on('disconnect',()=>{
// console.log('disconnect')
// });
// //接收客户端所发送的消息
// socket.on('message',(mes)=>{
// console.log('客户端发送来的消息 message: ',mes);
// io.emit("message",mes);
// })
// });
// server.listen(3000);
/************************************************ */
//第二种连接方式: 独立的socektIO
// const io = ws();
// io.on('connection',socket=>{
// debugger
// console.log('当前有用户连接 socket connection ');
// socket.on('event',data=>{
// console.log('event',data);
// });
// socket.on('disconnect',()=>{
// console.log('disconnect')
// });
// //接收客户端所发送的消息
// socket.on('message',(mes)=>{
// console.log('客户端发送来的消息 message: ',mes);
// io.emit("message",mes);
// })
// });
// io.listen(3000);
/************************************************ */
//第三种方式:基于 express
// const app = require('express')();
// const server = http.createServer(app);
// const io = ws(server);
// io.on('connection',socket=>{
// debugger
// console.log('当前有用户连接 socket connection ');
// socket.on('event',data=>{
// console.log('event',data);
// });
// socket.on('disconnect',()=>{
// console.log('disconnect')
// });
// //接收客户端所发送的消息
// socket.on('message',(mes)=>{
// console.log('客户端发送来的消息 message: ',mes);
// io.emit("message",mes);
// })
// });
// server.listen(3000);
/************************************************ */
//第四种方式:基于 express
const app = require('koa');
const NewApp = new app();
const server = http.createServer(NewApp.callback());
const io = ws(server);
io.on('connection',socket=>{
debugger
console.log('当前有用户连接 socket connection ');
socket.on('event',data=>{
console.log('event',data);
});
socket.on('disconnect',()=>{
console.log('disconnect')
});
//接收客户端所发送的消息
socket.on('message',(mes)=>{
console.log('客户端发送来的消息 message: ',mes);
io.emit("message",mes);
});
socket.on("btnEvent",(mes)=>{
console.log("btnEvent",mes);
io.emit("resBtnEvent",mes);
socket.emit("message",mes);
})
});
server.listen(3000);