Hapi.js + Socket.io 在一起
Hapi.js + Socket.io together
我想 运行 Hapi.js 和 socket.io。如果我使用同一台服务器为 socket.io 和 hapi 应用程序建立单独的连接,那就太好了,因为我想在我的套接字中使用 Hapi 身份验证 cookie
我尝试了几个解决方案,但其中 none 个解决方案有效,而我的服务器崩溃了。我尝试在与 hapi 相同的端口上 运行 socket.io 并且我的应用程序启动了,但出现 "This localhost page can not be 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);
});
我通过创建两个单独的连接简单地解决了我的问题。现在一切正常!
这是我的代码现在的样子:
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对我帮助很大
有时您可能只想在您的环境中使用一个端口。您实际上可以在 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');
});
我想 运行 Hapi.js 和 socket.io。如果我使用同一台服务器为 socket.io 和 hapi 应用程序建立单独的连接,那就太好了,因为我想在我的套接字中使用 Hapi 身份验证 cookie
我尝试了几个解决方案,但其中 none 个解决方案有效,而我的服务器崩溃了。我尝试在与 hapi 相同的端口上 运行 socket.io 并且我的应用程序启动了,但出现 "This localhost page can not be 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);
});
我通过创建两个单独的连接简单地解决了我的问题。现在一切正常!
这是我的代码现在的样子:
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对我帮助很大
有时您可能只想在您的环境中使用一个端口。您实际上可以在 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');
});