我需要使用 NGINX 作为 WebSocket 代理,我已经能够运行这个 tutorial没有任何问题。在本例中,一个简单的 WebSocket 应用程序是使用 ws 和 Node.js 完成的。但是,我需要用用 C 开发的应用程序替换 javascript (server.js) 中的代码。
为此,我尝试使用此 tutorial 中显示的最后一个示例,非常简单易懂。
但是,使用与 server.js 中相同的端口和配置,在运行编译的 C 代码时,似乎没有正确建立通信。在这种情况下,当我在客户端的终端运行 wscat 时,它似乎在等待什么,因为从未见过“已连接”这个词,但通信也没有完成(这就是为什么我说它似乎在等待什么; 在其他情况下,如果我尝试使用不同的端口,例如,通信将关闭并且出现一个句子“错误:意外的服务器响应”)。
另一方面,在服务器端,我可以看到有一个新连接。我怀疑服务器的回答没有到达客户端,但我不知道为什么。 Nginx 已正确配置,因为在 javascript 中完成的示例工作正常,并且我在 javascript 和 C 中使用相同的端口(在 server.js 中我有:'wss = new WebSocketServer({port: 8010});'并且在server.c: 'server.sin_port = htons( 8010 );' 从我的 Angular 来看它应该工作...)
我已经尝试过使用 C 语言编写的其他具有类似行为的示例。有谁知道这可能是什么原因?您是否为 WebSocket 服务器推荐其他特定的 C 代码?
最佳答案
您的问题是 websockets 和套接字之间存在非常明显的区别。套接字是更底层的网络接口(interface),而 websockets 在某种网络服务器上运行。
关于javascript - C 中 Websocket 服务器的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48671628/