我正在尝试将 socket.io 连接到 Hapi.js 服务器。我已经在 vanilla Node.js 中测试了 socket.io 的实现,一切都很好; Hapi 实现的服务器端似乎工作正常,但“/socket.io/socket.io.js”资源未提供给客户端。
我查看了 Hapi example ,但他们只显示在服务器上做什么,他们关于客户端握手的文档似乎很奇怪:他们在端口 8000 上有一个服务器,但说要发布到 8080 的 socket.io 握手——我什至试过这个(这似乎很不稳定,并且与所有其他 socket.io 实现不一致)没有运气。
谢谢!
最佳答案
Hapi 8 引入了一些新的复杂性,所以如果有人重新审视这个问题......
在客户端,你不必使用/socket.io/socket.io.js
,而是使用
- 一个 CDN(
https://cdnjs.cloudflare.com/ajax/libs/socket.io/0.9.16/socket.io.min.js
) - 或更具体地提供文件(
http://yoursite.io/js/socket.io/socket.io.js
) 更好的是,使用类似 npm/browserify 和 (https://www.npmjs.com/package/socket.io-client) 的东西:
var socket = require('socket.io-client')('http://localhost:8080');
您选择哪种方式包含上面的客户端代码
Hapi 8 将允许您通过如下聊天在服务器上做一些很酷的事情:
server.js
server.connection({ port: 8000, labels: 'app' });
server.connection({ port: 8080, labels: 'chat' });
server.register({
register: require('./server/plugins/socketIO')
},
function(err) {
if (err) throw err;
});
/plugins/socketIO/index.js
exports.register = function(server, options, next) {
var io = require('socket.io').listen(server.select('chat').listener,{log:false});
io.sockets.on('connection', function (socket) {
socket.on('someAction', function(name, cb) {
...
});
...
});
}
关于node.js - Hapi.js 和 Socket.io——socket.io.js 在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18343509/