2022-12-17-socket-后端与后端之间实时传输
目录
socket 后端与后端之间实时传输
之前一直用socket.io实现客户端,和服务端之间的交互,最近需要把一个node服务获取到的数据传到另一个node服务上,但是又不能依靠前端。所以我试着把发送数据的服务作为前端来和接受数据的服务做交互,没想到居然可以实现,下面是我的代码,仅供参考:
作为前端的服务:
var io = require('socket.io-client');
var socket= io.connect('http://localhost:0000');
socket.emit('a',{a:'1'})
作为后端的服务:
var express = require('express');
var app = express();
var server = require('http').Server(app);
var io = require('socket.io')(server);
io.on('connection', function (socket) {
socket.on('a', function (data) {
console.log(data)
},function(error){
console.log(error)
});
});
server.listen(0000);
这两者的不同就在于require的IO不同,一个用到的是socket.io-client,一个用服务端的socket.io。
下面我总结了一些socket的方法:
1.在一个服务端接收多个客户端时,客户端可以加上特有的参数query传给服务端来识别唯一的客户端:
var socket= io.connect('http://localhost:0000',{query:"data=a"})//客户端
socket.emit('a')
io.on('connection', function (socket) {
var data = socket.handshake.query.data//这里data的值就是a
socket.on(''+data,function(results){
console.log(results)
})
}) //服务端
2.当客户端socket.disconnect()时,服务端:
io.on('connection', function (socket) {
socket.on('disconnect', function () {
console.log( socket.handshake.query.data)//这里可以监听到的关闭的客户端
})
})
68747470733a2f2f:626c6f672e6373646e2e6e65742f71715f3331353430343033:2f61727469636c652f64657461696c732f3834383738333330