在express.js路由而不是bin / www中使用socket.io

时间:2018-10-22 07:09:52

标签: node.js express socket.io

我在expressJS中使用socket.io

我在bin / www中有套接字连接

我想做的是,当我将数据发送到sendmessage.js时,我想使用sendmessage.js中的socket.emit()将数据发送到客户端

bin / www

var io = require('socket.io')(server, {
  pingInterval: 10000,
  pingTimeout: 5000,
}).listen(server)

io.on('connection', function(socket){

socket.on('messageData', function(msg){

  io.sockets.emit('messageData', msg);
});
 socket.on('disconnect', function(msg){
 console.log("User DisConnected"); 
});
});

routers / sendmessage.js

var express = require('express');
var router = express.Router();
var checkAuth = require('../middleware/check-auth');
var connection  = require('./db');

/* GET users listing. */
router.post('/', checkAuth , function(req, res, next) {
    res.send();  

});

module.exports = router;

1 个答案:

答案 0 :(得分:0)

我认为您在套接字的概念上有问题。当一个套接字连接时,在客户端和socket.io服务器之间创建连接并保持连接。当您将请求发布到http服务器时,客户端和http服务器之间将创建另一个连接。连接是不同的,如果不访问socket.io连接的套接字,就无法发射数据。