相关疑难解决方法(0)

在快速路由文件中使用socket.io

我正在尝试将Socket.io与Node.js一起使用并发送到路由逻辑中的套接字.

我有一个相当标准的Express 3设置,其中包含一个位于路由中的server.js文件,然后我有一个index.js,它位于路径文件夹中,用于导出站点的所有页面/可公开访问的功能.所以他们看起来像:

exports.index = function (req, res) {
    res.render('index', {
        title: "Awesome page"
    });
}; 
Run Code Online (Sandbox Code Playgroud)

与server.js中定义的路由类似:

app.get('/',routes.index);
Run Code Online (Sandbox Code Playgroud)

我假设我必须在server.js中创建socket.io对象,因为它需要服务器对象,但是如何访问该对象并从index.js导出函数向它发出?

sockets node.js socket.io

17
推荐指数
5
解决办法
2万
查看次数

express.js 4和带快速路由器的套接字

我正在尝试使用express.js 4创建一个非常简单的节点API,但我需要一些'实时'事件,我添加了socket.io.我对两者都很新,所以我可能会遗漏一些基本的东西,但我找不到好的文档/ tuts.

在快速应用程序(使用快速生成器创建)中,基于我阅读的简单示例和项目文档,我有类似的东西.这工作正常,从客户端应用程序,我可以发送/接收套接字事件:

var express = require('express');
var path = require('path');
var logger = require('morgan');
var api = require('./routes/api');
var app = express();
var io = require('socket.io').listen(app.listen(3000));

app.use(logger('dev'));
app.use(express.static(path.join(__dirname, 'public')));
app.use('/api', api);

io.sockets.on('connection', function (socket) {
    console.log('client connect');
    socket.on('echo', function (data) {
        io.sockets.emit('message', data);
    });
});


// error handlers omitted

module.exports = app;
Run Code Online (Sandbox Code Playgroud)

但我想使用我的API路由中的套接字(在上面我需要的./routes/api.js文件中).例如,有人可能会使用API​​来PUT/POST资源,我希望该广播连接到socket.io客户端.

我看不到如何使用'io'变量或组织当前io.sockets.on('connection' ...快递路线中的函数代码.这是./routes/api.js文件:

var express = require('express');
var router = express.Router();
var io = ???;

router.put('/foo', function(req, res) {
    /* 
      do stuff …
Run Code Online (Sandbox Code Playgroud)

express socket.io

17
推荐指数
2
解决办法
2万
查看次数

标签 统计

socket.io ×2

express ×1

node.js ×1

sockets ×1