服务器(Node.js)中的控制器内部的Socket.js

时间:2018-05-21 13:18:09

标签: node.js socket.io

我正在使用nodejs,reactjs mongo和socket.io构建聊天应用程序。我的聊天应用程序包含一对一和群组聊天。我已经为群组聊天构建了一个模式,我正在插入群组名称随着它的成员和他们在table.io的聊天。我是一个初学者对socket.io,我不知道在db post操作后需要触发的套接字逻辑放在哪里。可以为我提出一些示例吗?< / p>

2 个答案:

答案 0 :(得分:0)

相应地更新您的代码:

=&GT; server.js 文件

    // Declare socket.io
    const io = require('socket.io')(server);

    // Add middleware to set socket.io in 
    app.use((req, res, next)=>{ res.locals['socketio'] = io; next(); });

=&GT;在控制器文件

    // Get the value of socket.io
    module.exports = your_function_name =  (req, res) => {

    const io = res.locals['socketio']
    // Use io when you need.

    });

希望这能解决您的问题。

答案 1 :(得分:0)

您可以通过以下方式将与套接字相关的代码分开:

<强> ==&GT; app.js

var express = require('express');
var socket = require('./socketServer');
var app = express();
var server = app.listen((config.node_port || 3000), function () {
    console.log('Listening on port ' + (config.node_port || 3000) + '...');
});
socket.socketStartUp(server);
module.exports = app;

<强> ==&GT; socketServer.js

var io = require('socket.io')();
var socketFunction = {}
socketFunction.socketStartUp = function (server) {
    io.attach(server);
    io.on('connection', function (socket) {
        console.log("New user is connected with socket:", socket.id);
    })
}
module.exports = socketFunction;

您还可以在下面的链接中查看带有套接字功能的节点API启动代码:

Node API Start up

希望这个答案对你有所帮助