Hapi.js与Socket.io - socket.io.js在哪里?

时间:2013-08-20 19:30:49

标签: node.js socket.io hapijs

我正在尝试将socket.io挂钩到Hapi.js服务器。我已经测试了vanilla Node.js中的socket.io实现,一切都很好; Hapi实现的服务器端似乎工作正常,但“/socket.io/socket.io.js”资源不会提供给客户端。

我已经检查了Hapi example,但他们只显示了在服务器上做了什么,他们在客户端握手上的文档看起来很奇怪:他们在端口8000上有一个服务器,但是说要发布套接字。 io握手到8080 - 我甚至试过这个(看起来很不稳定,并且与其他所有socket.io实现不一致)没有运气。

谢谢!

3 个答案:

答案 0 :(得分:3)

Hapi 8引入了一些新的错综复杂的内容,如果有人重新审视这个问题......

在客户端上,您不必使用/socket.io/socket.io.js,而是使用

  1. 一个cdn(https://cdnjs.cloudflare.com/ajax/libs/socket.io/0.9.16/socket.io.min.js
  2. 或更具体地提供文件(http://yoursite.io/js/socket.io/socket.io.js
  3. 更好的是,使用像npm / browserify和(https://www.npmjs.com/package/socket.io-client)这样的东西:

    var socket = require('socket.io-client')('http://localhost:8080');

  4. 您选择在上面包含客户端代码的哪种方式

    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行上指示的相同服务器和端口号。

如果请求到达服务器,它将在终端输出一个调试行,表明它为该文件提供服务。