【问题标题】:Hapi.js + Socket.io togetherHapi.js + Socket.io 一起
【发布时间】:2017-04-05 17:35:51
【问题描述】:

我想将 Hapi.js 与 socket.io 一起运行。如果我有使用同一服务器的 socket.io 和 hapi 应用程序的单独连接,那就太好了,因为我想在我的套接字中使用 Hapi auth cookie

我尝试了几个解决方案,但都没有工作,我的服务器崩溃了。我尝试在与 hapi 相同的端口上运行 socket.io 并且我的应用程序已启动,但我收到“找不到此本地主机页面”错误。我做错什么了?任何帮助将不胜感激

这是我的代码:

const Hapi = require('hapi');
const server = new Hapi.Server();
const Config = require('./config/config.js');
const port = Number(process.env.PORT || 3000);
const io = require("socket.io")(port);

server.connection({
    port: port
});

// my routes are here...

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

    console.log('connected');

    // Do all the socket stuff here.

})

server.start(function(err) {

    if (err) {
        console.error(err);
        throw err;
    }

    console.log('Server started at %s', server.info.uri);

});

【问题讨论】:

    标签: javascript node.js socket.io hapijs


    【解决方案1】:

    我只是通过创建两个单独的连接解决了我的问题。现在一切正常!

    这是我的代码现在的样子:

    const Hapi = require('hapi');
    const server = new Hapi.Server();
    const Config = require('./config/config.js');
    const port = Number(process.env.PORT || 3000);
    
    server.connection({ port: port, labels: ['app'] });
    server.connection({ port: 8000, labels: ['chat'] });
    
    const app = server.select('app');
    
    app.register([
        // all app's stuff goes here
    ]);
    
    var io = require('socket.io')(server.select('chat').listener);
    
    io.on("connection", function (socket) {
    
        console.log('connected');
    
        // Do all the socket stuff here.
    
    })
    
    server.start(function(err) {
    
        if (err) {
            console.error(err);
            throw err;
        }
    
        console.log('Server started');
    
    });
    

    That website帮了我很多

    【讨论】:

    • 感谢您发布您的解决方案!
    【解决方案2】:

    有时您可能只想在您的环境中使用一个端口。您实际上可以在 socket.io 和 http 服务器之间共享相同的 hapi 连接。

    Hapi 不希望您使用同一个端口进行多个连接。 See here about this. 如果你这样做了,你可能不会在初始化时从 Hapi 收到任何错误,但你的第二个连接总是会出现 404 错误。

    @Mattonit 对一个端口方案的代码进行了一些小改动。

    const Hapi = require('hapi');
    const server = new Hapi.Server();
    const Config = require('./config/config.js');
    const port = Number(process.env.PORT || 3000);
    
    server.connection({ port: port, labels: ['app'] });
    
    const app = server.select('app');
    
    app.register([
        // all app's stuff goes here
    ]);
    
    var io = require('socket.io')(app.listener);
    
    io.on("connection", function (socket) {
    
        console.log('connected');
    
        // Do all the socket stuff here.
    
    })
    
    server.start(function(err) {
    
        if (err) {
            console.error(err);
            throw err;
        }
    
        console.log('Server started');
    
    });
    

    【讨论】:

      猜你喜欢
      • 2013-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-24
      • 2017-08-23
      相关资源
      最近更新 更多