2

我有一个项目需要在浏览器中使用 websocket(或命名管道)与本机程序进行通信。(通过Webassembly可行吗?)

我已经用 Boost Library 编写了一个 c++ websocket,并希望将它编译为 wasm。

但我不知道如何将 Boost Lib(不仅仅是标题)与 Emscripten 一起使用。

我尝试通过以下方式构建 Boost Lib: Using Boost with Emscripten

但是,在使用 Emscripten 编译项目时,我应该如何链接 lib?

谢谢!

4

2 回答 2

0

我认为您必须采用不同的解决方案才能将 websockets 与 wasm 一起使用。您可能想尝试在 javascript 中使用 websockets 并将其与您的 c++ 代码连接。

另一个答案,其中包含有关如何执行此操作的示例:

https://stackoverflow.com/a/44637040/3042747

c++/javascript 交互的 emscripten 文档:

https://kripken.github.io/emscripten-site/docs/porting/connecting_cpp_and_javascript/Interacting-with-code.html

于 2018-03-02T12:06:38.263 回答
-1

昨天我认为你不能这样做,因为在浏览器中你受限于浏览器 API。而且我只知道websocket。

但是今天我发现我不对 - 存在 WebRtc 数据通道,所以可能的 emscripten 库以某种方式实现了 C 'socket' API。

恕我直言,这太难了。为什么要使用可能功能有限的 socket 实现来实现 web socket 协议?你已经在 javascript API 中有工作的 websocket 了!

要在浏览器沙箱和外部世界之间进行通信,您可以从调用 websocket API 的 webassembly 程序调用 javasript 函数。

google io codelab中解释了如何编写不使用任何 C 库的 C 程序。在这种情况下,wasm 代码很小。

请参阅我的问题中的示例代码:如何从 webassembly websocket API 调用?

于 2017-06-18T20:42:23.497 回答