我正在尝试将socket.io挂钩到Hapi.js服务器。我已经测试了vanilla Node.js中的socket.io实现,一切都很好; Hapi实现的服务器端似乎工作正常,但“/socket.io/socket.io.js”资源不会提供给客户端。
我已经检查了Hapi example,但他们只显示了在服务器上做了什么,他们在客户端握手上的文档看起来很奇怪:他们在端口8000上有一个服务器,但是说要发布套接字。 io握手到8080 - 我甚至试过这个(看起来很不稳定,并且与其他所有socket.io实现不一致)没有运气。
谢谢!
答案 0 :(得分:3)
Hapi 8引入了一些新的错综复杂的内容,如果有人重新审视这个问题......
在客户端上,您不必使用/socket.io/socket.io.js
,而是使用
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) {
...
});
...
});
}
答案 1 :(得分:0)
您可以尝试将socket.io.js文件从node.js目录复制到一个众所周知的目录。
答案 2 :(得分:0)
我首先要确认您没有任何干扰请求服务的防火墙问题。
如果防火墙不负责阻止请求,请确保javascript文件的src指向您已配置的Hapi.createServer行上指示的相同服务器和端口号。
如果请求到达服务器,它将在终端输出一个调试行,表明它为该文件提供服务。