node.js - Hapi.js 和 Socket.io——socket.io.js 在哪里?

标签 node.js socket.io hapi.js

我正在尝试将 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,而是使用

  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');

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

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/

相关文章:

javascript - 需要一个模块如何影响 Node.js 的性能?

node.js - 如何在 ES6 node.js 环境中运行 mediapipe facemesh

Javascript 对象构造函数

hapi.js - 是否可以在 reply.file() 中手动设置内容类型 header ?

javascript - 具有不同模式的对象数组 - JOI

node.js - Joi 验证 - 与 POST 中的日期进行比较

node.js - 在分子服务重新启动时停止执行 sequelize default Delete

node.js - 术语 'gulp' 未被识别为 cmdlet 错误的名称

sockets - 我可以将 socket.io 与 Play Framework 2.0 Web Sockets 一起使用吗?

javascript - 聊天中带有 "/w"的 Nodejs 私信