首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mean.io框架与socket.io

Mean.io框架与socket.io
EN

Stack Overflow用户
提问于 2014-07-02 08:29:35
回答 2查看 1.2K关注 0票数 2

如何在socket.io栈中使用Mean.io?

首先,Mean.io非常定期地更改文件夹结构。因此,我的问题是,配置socket.io的最佳位置在哪里?还是使用express.io更好呢?

第二,我仍然不太清楚该在哪里查找告诉mean.io侦听端口的代码,我已经在all.js文件中的配置文件夹中找到了一个端口,但是真正的问题是,一旦我定义了server.listen(端口)应用程序没有加载。如果我没有应用程序加载,但socket.io不工作。

另外,我还有一个关于/socket.io/socket-io.js文件的问题?我在索引文件夹中复制了它,但是我的应用程序找不到它,或者说是404错误。据我所知,在任何这样的位置上,它都不是一个实际的文件,人们还建议将这一行设置为127.0.0.1/ socket.io /socket-io.js,但没有人让js文件可以让应用程序运行socket.io。

在socket.io框架中定义mean.io的正确方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-12 05:26:33

我也面临着同样的问题,我花了大约一周的时间终于把它做好了。我试着解释我做了什么:

app.js

在这个文件中,我只调用为我创建和设置一个socket.io对象的代码,然后将该对象传递给路由模块。

代码语言:javascript
复制
'use strict';

/*
 * Defining the Package
 */
var Module = require('meanio').Module;

var MeanSocket = new Module('chat');

/*
 * All MEAN packages require registration
 * Dependency injection is used to define required modules
 */
MeanSocket.register(function(app, http) {

    var io = require('./server/config/socketio')(http);

    //We enable routing. By default the Package Object is passed to the routes
    MeanSocket.routes(io);

    return MeanSocket;
});

server/config/socketio.js

此文件简单地配置socket.io对象。请注意,为了完成这项工作,我不得不将version模块升级到0.5.26版本,因为在旧版本的version版本中没有http对象(快递服务器)。此外,如果您想使用ssl,您可以注入https而不是http。

代码语言:javascript
复制
'use strict';

var config = require('meanio').loadConfig(),
    cookie = require('cookie'),
    cookieParser = require('cookie-parser'),
    socketio = require('socket.io');

module.exports = function(http) {

    var io = socketio.listen(http);

    io.use(function(socket, next) {
        var data = socket.request;

        if (!data.headers.cookie) {
            return next(new Error('No cookie transmitted.'));
        }

        var parsedCookie = cookie.parse(data.headers.cookie);
        var sessionID = parsedCookie[config.sessionName];
        var parsedSessionID = cookieParser.signedCookie(parsedCookie[config.sessionName], config.sessionSecret);

        if (sessionID === parsedSessionID) {
            return next(new Error('Cookie is invalid.'));
        }

        next();
    });

    return io;
};

routes/chat.js

最后,使用路由文件定义套接字事件等。

代码语言:javascript
复制
'use strict';

// The Package is passed automatically as first parameter
module.exports = function(MeanSocket, io) {

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

        console.log('Client Connected');

        socket.on('authenticate', function(data, callback) {

        });
    });
};

希望这能有所帮助!

票数 3
EN

Stack Overflow用户

发布于 2015-01-04 13:41:50

最简单的方法是安装套接字包..。

代码语言:javascript
复制
mean install socket
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24526374

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档