目录

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