C++ uWebSockets 服务器可以与 JavaScript 客户端通信吗?

Eli*_*ita 5 javascript c++ websocket

关于uWebSockets有一些我不明白的地方,但主要是, uWebSockets 是否可以与普通的 WebSockets 一起使用,或者只是借用名称?这几天我一直在摸不着头脑,我不知道我是否做错了什么,或者我只是愚蠢。

我已经用 C++ 制作了一个最低限度的服务器,据我所知,它可以正确启动 -

#include <iostream>
#include <uWS\uWS.h>

int main() {
    uWS::Hub hub;

    hub.onConnection([](uWS::WebSocket<uWS::SERVER> *ws, uWS::HttpRequest req) {
            std::cout << "A client connected" << std::endl;
        }
    );

    if (hub.listen(13049)) {
        std::cout << "Listening on port 13049" << std::endl;
        hub.run();
    }
}
Run Code Online (Sandbox Code Playgroud)

以及一个基本的 JavaScript 客户端 -

var ws = new WebSocket("ws://127.0.0.1:13049");

ws.onopen = function(event) {
    console.log("Connected");
};
Run Code Online (Sandbox Code Playgroud)

所以我的问题。为什么这个连接不上?

Eli*_*ita 3

找到答案了!

hub.listen("0.0.0.0", 13049)

我意识到我只能使用本地主机连接到服务器,但我不明白为什么。在查看了其他一些WebSocket文章后,我发现了这个问题。这是因为,默认情况下,服务器仅尝试接受来自本地主机的连接。我不知道为什么会这样,但你必须手动告诉它你想听每个人的意见。

为此,hub.listen(13049)我将不只是接受 localhost,而是将hub.listen("0.0.0.0", 13049). “0.0.0.0”是“任何地址”的一种表达方式。这解决了问题并允许我从任何 WebSocket 正常连接。