【发布时间】:2017-08-09 23:48:56
【问题描述】:
基地
我正在尝试在我的节点项目中使用套接字。这就是它的基本工作原理:
/
|-> controllers/
| |-> home.js
|-> app.js
|-> sockets.js
/app.js
在应用程序上,我调用 sockets.js 来启动套接字服务器:
var express = require('express');
var sockets = require('./sockets');
var app = module.exports = express();
var server = app.listen(config.PORT);
var io = sockets(server);
/sockets.js
在这个文件上,我启动了套接字服务器,然后返回 io。
var socket = require('socket.io');
module.exports = function(server) {
var io = socket.listen(server);
io.sockets.on('connection', function(socket) {
// Here I can call every socket I want (if I have the socket_id) with this code :
var socket = io.to(socket_id);
socket.emit('message', {});
});
return io;
};
问题
但是现在,我想在我的家庭控制器上检索我的 io 服务器并调用一个特定的套接字。我试过这样做:
/controller/home.js
var io = require('../sockets.js');
module.exports = {
home: function(req, res, next) {
var socket = io.to(socket_id);
socket.emit('message', {});
}
};
但是我有这个错误,因为我没有执行这个函数(但我不想在这里创建一个新的套接字服务器):
TypeError: Object function (server) {
var io = socket.listen(server);
/*.....*/
return io;
} has no method 'to'
我想访问这个在 app.js 上调用的函数返回的 io 变量。我怎样才能得到它?
【问题讨论】:
-
您是否在您的
app.js中使用home.js控制器? -
是的,当用户请求
/时,我的路由器会调用home.js
标签: javascript node.js sockets socket.io