0

我正在使用 Hapi 构建一个 API。我需要 WebSocket 功能,似乎 Nes 是最流行的与 Hapi 一起使用的。这很好,因为 Nes 让事情变得非常简单,例如,测试路线可能看起来如此......

// Register Nes.
await server.register(Nes);
...
...
// WebSocket route.
server.route({
  method: 'GET',
  path: '/h',
  config: {
    id: 'hello',
    handler: (request, h) => {
      return 'world!';
    }
  }
});

这很好,但是,文档显示使用 WebSockets 向该路由发出请求的唯一方法是在客户端上也使用 Nes...

const Nes = require('nes');

var client = new Nes.Client('ws://localhost');

const start = async () => {

  await client.connect();
  const payload = await client.request('hello');  // Can also request '/h'
  // payload -> 'world!'
};

start();

我的问题是客户端不使用 JavaScript。Nes 库根本不存在。在这种情况下,我还能使用 WebSockets 向这条路由发出请求吗?没有这方面的例子,所以我不明白我怎么能这样做。如果不可能,那么我想知道我的选择是什么,因为我正在使用的框架(Flutter)中甚至不存在 Socket.io。

4

1 回答 1

2

由于 WebSockets 只是一个协议,任何用于 Flutter 的 WebSocket 客户端库都应该可以工作。WebSockets 不直接绑定到特定语言。因此,您必须为您的框架找到并实现一个 WebSocket 库。我浏览了他们的网站并找到了一些潜在的候选人,但我确信这不是一个详尽的列表。

以下是来自 Flutter 的一些潜在的 Web 套接字包:

有关集成软件包的信息,请在此处查看此链接

至于使用Hapi 开发 Web 套接字,您不必使用NES。使用由同一发布者为客户端和服务器开发的库(如Socket.io )可能是最有意义的。虽然将 Socket.io 与 Hapi 一起使用超出了此答案的范围,但您可能会发现这篇中等文章很有帮助。

于 2018-10-30T14:17:46.707 回答