一尘不染

在Express 4和express-generator的/ bin / www中使用socket.io

javascript

所以这是交易:我正在尝试在一个快速项目中使用socket.io。启动Express Js 4之后,我更新了express-
generator,现在应用程序的初始功能进入了./bin/www文件

var server = app.listen(app.get('port'), function() {..}

(检查通过npm install -g express-generator,然后express myApp

话虽这么说,让我们记住socket.io文档如何要求我们将其触发:

var app = require('express').createServer();
var io = require('socket.io')(app);

好的,但是我无法像推荐的那样在app.js中执行此操作。为了正常工作,这应该在./bin/www中完成。在./bin/www中,这是我可以做的事情:

var io = require('socket.io')(server)

好的,这行得通,但是我不能在其他任何地方使用io var,我真的不想将我的socket.io函数放在www文件中。

我想这只是基本语法,但是我什至无法使用它,甚至在www文件上也不使用module.exports = serverorserver.exports = server``module.exports.io = app(io)

因此,问题是:如何使用具有该/ bin / www文件的socket.io作为我的应用程序的起点?


阅读 328

收藏
2020-05-01

共1个答案

一尘不染

在./bin/www之后 var server = app.listen(.....)

var io = require('socket.io').listen(server);
require('../sockets/base')(io);

所以现在我创建../sockets/base.js文件,并将这个小家伙放进去:

module.exports = function (io) { // io stuff here... io.on('conection..... }

是的 现在它可以工作了……所以我想除了在/bin/www内部启动socket.io之外,我别无选择,因为那是我的http服务器启动的地方。目的是现在我可以在其他文件中构建套接字功能,从而使事物保持模块化require('fileHere')(io);

<3

2020-05-01