2017-04-05 1 views
0

Je veux exécuter Hapi.js avec socket.io. Ce serait génial si j'avais des connexions séparées pour socket.io et hapi app en utilisant le même serveur car je veux utiliser des cookies auth Hapi dans ma socketHapi.js + Socket.io ensemble

J'ai essayé quelques solutions, mais aucune ne fonctionne et mon serveur est s'écraser. J'ai essayé de lancer socket.io sur le même port que hapi et mon application a démarré, mais j'ai l'erreur "Cette page localhost est introuvable". Qu'ai-je fait de mal? Toute aide sera appréciée

Voici mon code:

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

}); 

Répondre

2

J'ai simplement résolu mon problème, en créant deux connexions distinctes. Maintenant tout fonctionne bien!

Voilà comment mon code ressemble maintenant:

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 m'a beaucoup aidé

+0

Merci d'avoir posté votre solution! –

1

Quelques fois, vous pourriez vouloir utiliser un port sur votre environnement. Vous pouvez réellement partager la même connexion hapi entre socket.io et le serveur http. Hapi ne veut pas que vous utilisiez le même port pour plusieurs connexions.

See here about this. Si vous avez fait cela, vous pourriez ne pas avoir d'erreur de Hapi au moment de l'initialisation mais votre deuxième connexion obtiendra toujours une erreur 404.

Petits changements du code de @ Mattonit pour un scénario à un port.

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

});