ws+socket.io 精读Websocket原理大全需知,以及具体使用( 七 )


3、服务器端通过 emit 广播,通过 on 接收广播
//引入socket.iovar socket = require('socket.io');// socket 与 http服务建立连接var io = socket(app);// 监听连接事件 io.on('connection',function(sock){console.log('一个客户端与服务器建立连接了');//服务器获取客户端广播的数据sock.on('addcart', function(data){console.log(data);//服务器给客户端发送数据//socket.emit();/*谁给我发信息我把信息广播给谁*///io.emit() ;/*群发给所有连接服务器的客户都广播数据*/socket.emit('to-client','我是服务器的数据'+data.client);//io.emit('to-client','我是服务器的数据'+data.client);})sock.on('disconnect',function(){console.log('断开连接了');})})复制代码每一个连接上来的用户,都有一个 socket 。由于我们的 emit 语句,是 socket.emit()发 出的,所以指的是向这个客户端发出语句 。
广播,就是给所有当前连接的用户发送信息:
io.emit('to-client','我是服务器的数据'+data.client); /*群发给所有连接服务器的客户都广播数据*/复制代码4. 客户端端通过 emit 广播,通过 on 接收广播
<button id="button">给服务器发送数据</button><script src=https://www.isolves.com/it/cxkf/bk/2020-10-14/"http://localhost:3000/socket.io/socket.io.js">复制代码7.3 Express 结合 Socket.io 实现服务器和客户 端的相互通信第一个目标是建立一个简单的HTML网页,提供表单和消息列表 。
var app = require('express')();//创建http server ,createServer 与 Server作用一样都是创建servervar http = require('http').createServer(app);//var http = require('http').Server(app);app.get('/', (req, res) => {res.send('<h1>Hello world</h1>');});http.listen(3000, () => {console.log('listening on *:3000');});复制代码Express将app初始化为可以提供给HTTP服务器的函数处理程序 我们定义了一个路由处理程序,当我们访问我们的网站主页时,它会被调用 。
我们让http服务器监听端口3000 。
7.3.1 引入 Socket.IOnpm install socket.io
注意:socket.io基于http服务(socket.io的参数就是http server)
var app = require('express')();var http = require('http').createServer(app);var io = require('socket.io')(http);app.get('/', (req, res) => {res.sendFile(__dirname + '/index.html');});io.on('connection', (socket) => {console.log('a user connected');});http.listen(3000, () => {console.log('listening on *:3000');});复制代码7.3.2 写socket的代码//3、写socket的代码io.on('connection', function (socket) {console.log('a user connected');socket.on('message',function(key){console.log(key);//io.emit广播//socket.emit谁给我发的信息我回返回给谁//io.emit('servermessage',data);/*服务器给客户端发送数据*///机器人聊天//console.log(robot[key])//socket.emit('servermessage',robot[key]);io.emit('servermessage',key.msg);})});复制代码7.3.3 群聊io.emit 广播 只要接收到客户端的信息,就把这个信息发送给连接到这个服务的所有客户端用户
io.emit('servermessage',data); /


推荐阅读