2017-04-05 9 views
0

socket.ioと一緒にHapi.jsを実行したい。私がソケットでHapiの認証クッキーを使用したいので、同じサーバーを使用してsocket.ioとhapiアプリケーションを別々に接続していれば素晴らしいでしょう。Hapi.js + Socket.io一緒に

私はいくつかのソリューションを試しましたが、クラッシュする。私はhapiと同じポート上でsocket.ioを実行しようとしましたが、私のアプリは起動しましたが、 "This localhost page not found"エラーが出ました。私は何を間違えたのですか?すべてのヘルプはここ

を理解されるであろう私のコードです:

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); 

}); 

答えて

2

私は単純に二つの別々の接続を作成することによって、私の問題を解決しました。今はすべてがうまくいっています!

は、ここに私のコードは、今どのように見えるかです:

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

は私をたくさん

+0

あなたのソリューションを投稿していただきありがとうございます! –

1

ご使用の環境に1つのポートを使用したいだけかもしれないいくつかの回を助けました。あなたは実際にsocket.ioとhttpサーバの間で同じhapi接続を共有することができます。

Hapiは、複数の接続に同じポートを使用したくない場合があります。 See here about this.これを行うと、初期化時にHapiから何のエラーもないかもしれませんが、2回目の接続では常に404エラーが発生します。

1つのポートシナリオで@ 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'); 

});