将 c++ wss 服务器与 websocket++ 或其他 c++ websocket lib 一起使用

Posted

技术标签:

【中文标题】将 c++ wss 服务器与 websocket++ 或其他 c++ websocket lib 一起使用【英文标题】:using c++ wss server with websocket++ or other c++ websocket lib 【发布时间】:2021-10-13 00:09:35 【问题描述】:

我正在尝试编写一个 c++ websocket 服务器并让浏览器/chrome 客户端通过 websockets 连接,用于多人游戏。我正在使用 atm 的 websocket c++ 库是 websocketpp 或 websocket++。我编写了一个应用程序,允许客户端通过 ws 和 localhost 进行连接,但是当我为地址添加 ip 时,根本不会发生连接。现在我想我必须使用 ssl 和 wss 进行 ip 连接?我试过了,有一些连接活动,但握手超时。我可能遇到跨组织问题,或者我需要 ssl 吗?我是 websockets 的新手。问题可能是我用openssl制作的ssl证书吗?我可以发布代码,或者如果你熟悉一个 c++ 库来做 websockets,它是什么?这甚至有可能吗?

【问题讨论】:

【参考方案1】:

无法通过 ip 连接的原因可能有多种。

首先是端口转发。在本地网络上没有必要,但在远程网络上运行服务器时,必须进行端口转发。您可以只运行您的服务器,然后使用一个简单的端口检查器(有很多网站可供它们使用)来查看是否可以建立连接。

另一个原因可能是你所说的 ssl。如果您在 web 主机上运行客户端,则主机可能需要通过 ssl/wss 建立 websocket 连接。如果您的服务器没有运行有效的 ssl 证书,那么这可能会阻止客户端连接到您的服务器。我知道例如 Github 页面要求服务器在服务器端运行 wss 或有效的 ssl 证书,以便建立客户端连接;但是,如果您为 Github 页面使用自定义域名,则可以禁用对 ssl 的需求。

为了获得有效的 ssl 证书,您需要为您的 IP 地址注册一个域,然后购买证书或使用 zerossl 或其他分销商提供的免费证书。

这是我编写的game,它连接到我在自己的机器上运行的 c++ 服务器,该服务器具有自己的域和有效的 ssl 证书,客户端运行在 github 页面上,具有我已注册的自定义域.

它基本上是多人扫雷游戏,目标是定位旗帜而不是避开它们。

【讨论】:

以上是关于将 c++ wss 服务器与 websocket++ 或其他 c++ websocket lib 一起使用的主要内容,如果未能解决你的问题,请参考以下文章

Websocket配置证书支持wss

棘轮和 WSS 无法正常工作

无法使用 UnitySocketIO 与 wss://echo.websocket.org/ 握手

WebSockets - 服务器不满足 wss 请求的问题。有啥问题?

Node wss Websocket 在桌面上工作,而不是在移动设备上

带有代理的 WSS 使用端口 443 浏览器客户端连接到端口 6001 上的 websocket 服务器