【发布时间】:2017-09-22 18:55:30
【问题描述】:
我正在尝试将 hapijs 与 socket.io 一起使用,并且已经搜索了很多关于如何以正确的方式将 socket.io 集成到 hapi 服务器的信息。我发现一种方法是example,我仍然不确定这是否是可行的方法。我不得不承认我是 hapijs 的新手,我还在学习它:)
var Path = require('path');
var Hapi = require('hapi');
var socketio = require('socket.io');
var server = new Hapi.Server();
server.connection({port: 3000});
server.register(require('vision'), function (err) {
server.views({
engines: {
ejs: require('ejs')
},
relativeTo: __dirname,
path: 'templates'
});
});
var plugins = [
{register: require('./lib/index.js')}
];
server.register(plugins, function (err) {
server.start(function () {
io = socketio.listen(server.listener);
io.on('connection', function (socket) {
socket.on('create', function (room) {
socket.join(room);
console.log("Joined room: " + room);
socket.emit('message', "Joined room");
});
});
console.log('Server running at:', server.info.uri);
});
});
还有 lib/index.js
exports.register = function(server, options, next) {
var tasks = [];
server.route([
{
method: 'GET',
path: '/tasks',
handler: function (request, reply) {
reply.view('index', { sid: "6001" });
io.emit('message', "Test");
}
},
{
method: 'POST',
path: '/tasks/{name}',
handler: function (request, reply) {
reply.view('index', { sid: "6001" });
io.emit('message', "Test");
}
},
{
method: 'POST',
path: '/tasks',
handler: function (request, reply) {
io.emit('message', "Test");
}
}
]);
next();
}
exports.register.attributes = {
name: 'routes-tasks',
version: '1.0.0'
};
如果这不是使用 hapijs 的方式,请纠正我。
【问题讨论】:
-
我应该使用nes而不是socket.io吗?
标签: node.js sockets socket.io hapijs