后端自学之路《实践》第一篇:搭建socketIO 服务 总共四种方式


参考资料: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);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值