问题标签 [qtwebsockets]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
multithreading - Qt Websocket同时处理多个请求
我的应用程序基于 Qt websocket 示例(http://doc.qt.io/qt-5/qtwebsockets-echoserver-example.html)。在我的应用程序中,大约有 20 个用户连接到 websocket 服务器,有些用户正在发送一些兆字节的消息。
我注意到,虽然 websocket 服务器正在接收这些大消息(可能需要几秒钟或几分钟),但它会完全阻止/排队所有其他请求或来自其他客户端的连接。
是否有任何推荐的设计如何解决这个问题?谢谢
c++ - 如何在 Qt 中修改 QWebsocket 定时器
我有一个简单的客户端应用程序(使用QWebSocket
),它想要连接到我的服务器应用程序(即QWebSocketServer
)。
当我打开与关闭/不可用的 webSocketServer 的连接时,我的 webSocket 会在 30 秒后触发“断开连接”信号。
这很好,因为它可以帮助我了解服务器已关闭/不可用,因此我可以重试或警告用户该问题。
如果客户端和服务器之间的链接失败,也会发生同样的事情。即,在将 (sendBinaryMessage) 写入 webSocket 后,会在 30 秒后触发断开连接的信号。
我想知道默认计时器是什么QWebSocket
以及如何修改它们?
我在哪里可以找到这样的信息/文件?webSockets 上的 Qt 文档根本没有提到这种行为!我应该阅读代码还是...?!
提前致谢
qt - 使用 QWebSocket 创建的安全 websocket 连接被拒绝
QWebSocket 与 C++ 的连接有问题。
我收到 3 个错误,然后断开连接,但从不连接。
调用槽:错误
QAbstractSocket::RemoteHostClosedError
调用槽:错误
QAbstractSocket::ConnectionRefusedError
调用槽:错误
QAbstractSocket::RemoteHostClosedError
调用槽:断开连接
当我在令牌中输入一个小错字(以测试身份验证是否正常)时,我开始接收只有 QAbstractSocket::ConnectionRefusedError 错误。
最有趣的部分是我已经用python实现了websocket连接并且效果很好,所以问题不应该来自websocket服务器部分,或者请求头设置:
这个 websocket 连接是我的 c++ sdk 的一部分,所以我需要用 c++ 实现它。您对我在 C++ 代码中遗漏的内容有任何想法吗?
qt - QML 中基于 WebSockets 的 Qt WebView 和 WebChannel
我想从在WebView中运行的 HTML 页面访问QtObject - 调用方法、读/写属性等。
据我了解,我需要在 QML 和 HTML 端之间建立WebSockets连接,然后将其用作WebChannel的传输。
不要将 WebView 与WebEngineView混淆——我知道如何用 WebEngineView 来做,但我需要用 WebView 来做。
所以,这就是我所拥有的。
QML 端
HTML 端
简单的消息交换工作正常(socket.send()
),所以传输没问题,但是如何将 WebChannel 分配给 WebView?使用 WebEngineView 很简单,那里有一个webChannel
属性(甚至不需要使用 WebSockets),但在 WebView 中没有任何相似之处。我的意思是,必须告诉 WebView WebChannel 包含我的 QtObject 以便对 JS 可见?
如果 WebView 不支持 WebChannel(?),那么如何使用外部浏览器呢?这个例子表明使用 C++ 是可能的,但我想用 QML 来做。
我使用 Qt 5.11.1。
c++ - Qt QWebsocket::open 阻塞用户界面
我正在开发一个小型系统,它由几个客户和一个管理应用程序组成。每个客户端都有一个 QWebSocket 服务器来监听管理员的请求,因此管理员应用程序需要连接到不同的客户端。
这是我的登录对话框:
在登录之前,我不知道哪个是客户端 IP 地址,因此每次发送登录凭据时,我都需要尝试打开与该 IP 地址的连接。问题是在 Windows UI 中阻塞直到套接字服务器响应或超时,但在 Windows 中它工作正常。
编辑 1:我遵循了Tung Le Thanh的建议,因此代码中包含了他的提示。现在的主要问题是如果ConnectionHelper
没有获得QSocketNotifier 就无法发出任何信号:Socket notifiers cannot be enabled or disabled from another thread
我有一个ConnectionHelper
负责将接收数据发送到 WebSocket setver 和从 WebSocket setver 发送接收数据。
主文件
LoginDialog 的构造函数:
已接受的插槽:
我确实禁用“确定”按钮,直到收到任何响应并且在 Linux 上工作正常,但在 Windows 中,整个 UI 块并且在收到响应之前变得无响应。
我也尝试将ConnectionHelper
实例移动到另一个线程,但我得到了这个响应:QSocketNotifier: Socket notifiers cannot be enabled or disabled from another thread
我没有想法,我需要找到一种方法来进行webSocket->open(url)
异步或类似的事情。
谢谢。
qt - WebSocket QML 类型是否有 ping/pong 系统
WebSocket QML 类型是否支持任何 ping/pong 系统?
文档没有说明它,所以我想知道是否有一种“模拟”的方法ping/pong
,例如尝试使用其中一种send
方法并检查共同响应received
信号中返回的内容?
或者我应该使用QWebSocket 类来实现它?另外,保留QML WebSocket
发送/接收功能,而仅将类用于 ping/pong 目的,那么最好只在类中实现整个功能?
c++ - 为什么我不能将 QWebsocket::error SIGNAL 连接到 lambda 或具有相同签名的任何其他 SLOT 类型?QT5.9
我正在尝试构建一个实现 QWebSocket 的简单程序,但是,我首先尝试做的是检查连接是否启用。它没有抛出任何异常,因为我从未连接过错误信号,但我可以检查我的云服务器是否进行了任何连接尝试,并看到连接从未发生过。所以我尝试实现错误信号以查看问题的原因是什么,但我似乎无法使信号连接到我的打印功能。我的意思是我总是得到一个编译时错误。如果有人对我应该如何处理这个有任何想法,请说出来!
我也试过这样。我没有得到任何编译时错误,但是我得到了这个运行时错误:
下面是3张图片来说明问题:
主文件:
错误信息:
自定义打印机类:
还要忽略“qDebug()<<”“<error();” 行现在已评论。
这是我得到的错误”
c++ - 使用连接的套接字终止 QWebSocketServer
我调试用 C++/Qt 5.12.1 编写的控制台多线程应用程序。它在 Linux Mint 18.3 x64 上运行。
这个应用程序有SIGINT
处理程序QWebSocketServer
和QWebSocket
表格。它使用close()
QWebSocketServer
并调用abort()
/ deleteLater()
forQWebSocket
表中的项目来处理终止。
如果 websocket 客户端连接到这个控制台应用程序,那么终止会因为一些正在运行的线程而失败(我想它是内部QWebSocket
线程)。如果没有连接,则终止成功。
如何解决?让应用程序优雅地退出。
javascript - 使用 Qt runJavaScript 函数访问 Javascript 类对象
由于我是 javascript/HTML 新手,最近我开始使用 Qt QWebEngineView 进行项目。一段时间以来,我一直在寻找将数据从 C++ 程序共享到 Javascript 的最佳方法。到目前为止,我能够将数据发送到 Javascript 程序的唯一方法是使用该QWebEnginePage::runJavaScript
函数。我也看到有使用这里QWebChannels
描述的可能性,但我更喜欢它的简单性。QWebEnginePage::runJavaScript
到目前为止,我使用该runJavaScript
方法遇到的唯一问题是,为了编写一个变量,这需要在 HTML 文件中定义,我实际上不是 100% 确定这是否是唯一的方法,但是这是它对我有用的唯一方法。我目前的情况是这样的:
在 HTML 文件中:
在 C++ 文件中:
使用此设置,我可以从 C++ 代码在 Javascript/HTML 端编写变量。因为使用此解决方案,我需要在 HTML 文件中为要发送的每个值创建尽可能多的单独变量,所以我想问是否可以使用类对象或 JavaScript 对象来代替使用单独的变量。我创建了一个类,其中包含一些方法来编写类成员,如下所示: 在 js 文件中:
使用此解决方案,如果我创建PositionState
类的对象并从 javascript 文件中调用函数obj.setPosition(44,10.45)
,则对象的类成员设置正确,但是如果我从 C++ 尝试它,我会遇到一些错误。
如果只obj
在 Javascript 文件中定义,我会得到错误js: Uncaught ReferenceError: obj is not defined
。如果我在 HTML 文件中定义一个变量Id="obj"
并运行相同的脚本,我会收到错误js: Uncaught TypeError: obj.setPosition is not a function
,即使obj.setPosition
我使用的是错误,也会发生错误document.getElementById('obj').setPosition
。
因此,对于我几乎没有 HTML/Javascript 知识的情况来说,HTML 文件不知道我的类定义,因此无法识别该setPosition
方法。所以我的问题是是否有办法从 C++ 代码编写类对象。
我还尝试使用类似 JavaScript 的对象,var Position = {Latitude: 0, Longitude: 0, Heading: 0}
并从 C++ 代码中运行带有 QString 的脚本, Position = {Latitude: 40, Longitude: 9, Heading: 20};
但也无法更改 Position 对象属性。
任何帮助将不胜感激,谢谢。
c++ - 如何在反应中运行 qtwebsocket webassembly?
我在反应中使用我的 qtloader 文件时遇到问题,在加载过程中,我的 qtloader 在编译 wasm 文件时停止并且没有继续实例化它有人知道我应该如何运行它吗?