QT/OSX Websocket打开握手时机

Qt/OSX WebSocket opening handshake timed out

本文关键字:时机 OSX Websocket QT      更新时间:2023-10-16

i刚刚在QT中开发了一个使用WebSocket服务器(qwebsocketerver)的应用程序。我在Linux下进行了此操作,一切都很好,但是当我在Mac OS上运行代码时,我无法通过Chrome上的网页连接到服务器。

连接花了很长时间,几分钟后我从Chrome获得了WebSocket opening handshake timed out

最后,我回到了基础知识,并尝试了QT的示例:

http://doc.qt.io/qt-5/qtwebsockets-slechoserver-example.html

完全相同。

编辑:

删除SSL并使用非安全网络机器的工作起作用,即使在同一端口上也可以。

Mac上的Chrome

Chrome可以在遥控器(非MAC)计算机上访问安全的QT WebSocket服务器,但是在连接到Mac时,在遥控计算机时间上浏览了Chrome,因此似乎有些不对劲。QT QWEBSOCKECTERVER示例。它在Linux和Windows上都很好。

正在建立连接(因为该应用程序未运行或关闭,因为Web浏览器会立即失败),但是无论出于何种原因,它都无法完成。

知道这可能是什么,或者我该如何尝试跟踪?

谢谢!

作为qt文档(http://doc.qt.io/qt-5/qssslsocket.html)说:注意:MACOS上的安全传输SSL后端可以通过导入本地证书和键来更新默认键链(默认值为您的登录密钥链)。当您的应用程序使用这些私钥时,这也可能导致显示系统对话框并征求许可。如果不希望的行为,请将QT_SSL_USE_TEMPORARY_KEYCHAIN环境变量设置为非零值;这将促使QSSLSLSOCKETS使用自己的临时钥匙扣。

这里的问题似乎与MacOS的权限系统进行了一些交互。

您第一次运行应用程序并连接时,该应用将弹出一个窗口,要求使用权限访问您的钥匙扣(我想安装证书)。

如果您在此时关闭对话框,它将不会返回,并且似乎没有基于QTweBsockEcketerver的程序从那时起就可以运行,直到您重新启动!