问题标签 [websocket++]

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.

0 投票
1 回答
769 浏览

c++ - 处理websocketpp连接路径

我真的是 websocketpp 的新手。你能告诉我,我怎样才能在我的服务器的新连接上获得 websocket 连接路径?我的意思是我需要得到这个部分:

我现在使用这个链接的一个例子:http ://www.zaphoyd.com/websocketpp/manual/common-patterns/storing-connection-specificsession-information

0 投票
1 回答
374 浏览

c++ - How to implement a WebSocket server serving only 1 client at a time

I'm using WebSocket++ library to implement a WebSocket server.

Due to the characteristic of my server, I would like it to serve only 1 client at a time. That is, once a client has been connected to my server, I would like it to stop listening from other potential clients until the already connected client disconnects.

Currently my server looks like:

How should I pause and resume listening, or is there any parameter for limiting number of concurrent clients?

0 投票
1 回答
578 浏览

tcp - 在 websocketpp 上只听两个连接

我使用 websocketpp 库设置了一个简单的广播服务器,用于个人 HTML + Javascript 聊天。到目前为止,一切都很完美,只有一个例外。此聊天仅供两个人同时使用。如果第三个人试图进来,他或她必须关上门。所以,逻辑是:

1 -> 服务器正在监听。

2 -> 爱丽丝连接。

3 -> Bob 连接。

4 -> 服务器停止监听。向 Alice + Bob 广播。

5 -> Carlos 尝试连接,但端口已关闭。

6 -> Bob 断开连接。

7 -> 卡洛斯连接。

8 -> 服务器停止监听。向 Alice + Carlos 广播。

起初我认为这会很简单,但在许多错误和阅读之后,我只是卡住了。我可以让我的服务器在握手过程之后停止监听,但是在此之后message_handler服务器端停止工作并且我无法从客户端收到任何消息,即使客户端仍然完全连接。我知道set_validate_handler并且我已经设置为同时只允许两个连接,但是服务器仍然在监听。我需要的是一种让服务器停止监听端口的方法。

我正在尝试关闭监听并以这种方式保持已经建立的连接:

但是,它给了我以下输出:

客户端甚至无法连接。否则,如果我m_server.stop_listening();在建立连接后使用 ,客户端仍保持完美连接,但服务器停止接收其消息,或者至少我无法在void on_message( connection_hdl hdl, server::message_ptr msg ).

0 投票
1 回答
3303 浏览

boost - websocketpp 库中的错误和 windows Visual Studio 2015 中的提升

我正在尝试从开发人员 github 编译这个简单的示例https://github.com/zaphoyd/websocketpp/blob/master/examples/echo_server/echo_server.cpp,但我在代码之外遇到了奇怪的错误。

我还尝试打开 /Za 选项,如本文所示:VC++ 2012 and Boost incompatibility - `throw()` specification in library headers但它会引发不同的错误,说“线程支持不可用:它已被明确禁用BOOST_DISABLE_THREADS"

有人知道如何解决这个问题吗?谢谢!

错误:我在 Windows10 x64 中使用 Visual Studio 2015, C:\websocketpp\websocketpp/transport/base/connection.hpp(187): error C2694: 'const char *websocketpp::transport::error::category::name(void) const': overriding virtual function has less restrictive exception specification than base class virtual member function 'const char *std::error_category::name(void) noexcept const' 1> C:\websocketpp\websocketpp/transport/base/connection.hpp(187): note: see declaration of 'websocketpp::transport::error::category::name' 1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\system_error(167): note: see declaration of 'std::error_category::name' 1>C:\websocketpp\websocketpp/transport/iostream/base.hpp(89): error C2694: 'const char *websocketpp::transport::iostream::error::category::name(void) const': overriding virtual function has less restrictive exception specification than base class virtual member function 'const char *std::error_category::name(void) noexcept const' 1> C:\websocketpp\websocketpp/transport/iostream/base.hpp(89): note: see declaration of 'websocketpp::transport::iostream::error::category::name' 1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\system_error(167): note: see declaration of 'std::error_category::name' 1>C:\websocketpp\websocketpp/error.hpp(151): error C2694: 'const char *websocketpp::error::category::name(void) const': overriding virtual function has less restrictive exception specification than base class virtual member function 'const char *std::error_category::name(void) noexcept const' 1> C:\websocketpp\websocketpp/error.hpp(151): note: see declaration of 'websocketpp::error::category::name' 1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\system_error(167): note: see declaration of 'std::error_category::name' 1>C:\websocketpp\websocketpp/frame.hpp(831): warning C4267: '=': conversion from 'size_t' to 'uint32_t', possible loss of data 1>C:\websocketpp\websocketpp/extensions/extension.hpp(65): error C2694: 'const char *websocketpp::extensions::error::category::name(void) const': overriding virtual function has less restrictive exception specification than base class virtual member function 'const char *std::error_category::name(void) noexcept const' 1> C:\websocketpp\websocketpp/extensions/extension.hpp(65): note: see declaration of 'websocketpp::extensions::error::category::name' 1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\system_error(167): note: see declaration of 'std::error_category::name' 1>C:\local\boost_1_59_0\boost/asio/detail/config.hpp(227): warning C4005: 'BOOST_ASIO_ERROR_CATEGORY_NOEXCEPT': macro redefinition 1> C:\local\boost_1_59_0\boost/asio/detail/config.hpp(213): note: see previous definition of 'BOOST_ASIO_ERROR_CATEGORY_NOEXCEPT' 1>C:\websocketpp\websocketpp/transport/asio/base.hpp(189): error C2694: 'const char *websocketpp::transport::asio::error::category::name(void) const': overriding virtual function has less restrictive exception specification than base class virtual member function 'const char *std::error_category::name(void) noexcept const' 1> C:\websocketpp\websocketpp/transport/asio/base.hpp(189): note: see declaration of 'websocketpp::transport::asio::error::category::name' 1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\system_error(167): note: see declaration of 'std::error_category::name' 1>C:\websocketpp\websocketpp/transport/asio/security/base.hpp(109): error C2694: 'const char *websocketpp::transport::asio::socket::socket_category::name(void) const': overriding virtual function has less restrictive exception specification than base class virtual member function 'const char *std::error_category::name(void) noexcept const' 1> C:\websocketpp\websocketpp/transport/asio/security/base.hpp(109): note: see declaration of 'websocketpp::transport::asio::socket::socket_category::name' 1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\system_error(167): note: see declaration of 'std::error_category::name' 1>C:\websocketpp\websocketpp/processors/base.hpp(165): error C2694: 'const char *websocketpp::processor::error::processor_category::name(void) const': overriding virtual function has less restrictive exception specification than base class virtual member function 'const char *std::error_category::name(void) noexcept const' 1> C:\websocketpp\websocketpp/processors/base.hpp(165): note: see declaration of 'websocketpp::processor::error::processor_category::name' 1> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\system_error(167): note: see declaration of 'std::error_category::name' 1>C:\websocketpp\websocketpp/common/md5.hpp(367): warning C4267: '+=': conversion from 'size_t' to 'websocketpp::md5::md5_word_t', possible loss of data 1>C:\websocketpp\websocketpp/sha1/sha1.hpp(176): warning C4267: '=': conversion from 'size_t' to 'unsigned int', possible loss of data ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

0 投票
2 回答
226 浏览

websocket - 基于子协议调度 websocket 连接

在技​​术上是否可以运行多个在同一端口上侦听并使用子协议名称进行调度的 websocket 服务器?例如,一个处理“protocol1”的进程和另一个处理“protocol2”的进程。我的猜测是它不是,因为 TCP 不能有条件地接受连接,所以唯一的方法是某种套接字所有权转移。

0 投票
1 回答
886 浏览

c++ - VS2015 在子目录中找不到包含头文件

我一直在尝试将 WebSocket++ 仅标头库包含到 VS2015 中的项目中。我已将 websocketpp 文件夹添加到源目录并将其包含在项目中,以便 hpp 文件显示在标题过滤器中。但是,当尝试为库编译示例代码时,我不断收到无法打开源文件的错误:

我一直在寻找解决方案,并尝试将 websocketpp 文件夹添加到项目包含目录和其他包含目录中,但尚未找到问题的解决方案。有谁知道如何解决这个问题?

0 投票
1 回答
65 浏览

c++ - 处理 boost 端点监听/运行错误

如果我设置错误/繁忙的端口,我将不会收到端点错误。我使用从 boost 端点公开继承的 websocket 服务器。我想在这里处理错误:

我尝试了 m_server.is_listening()、m_server.stopped() 等,但它们对标准/错误端口号显示相同的结果。我该如何处理错误?

UPD1:我使用websocketpp

0 投票
1 回答
1158 浏览

c++ - WebSocket++,on_message 事件

我对这段代码有疑问:

只是不断收到此错误: 错误图片

我只是 CPP 的初学者,并不了解所有功能。首先它说它无法理解“message_ptr”但后来我补充说:

它仍然无法正常工作。如何解决?

0 投票
0 回答
136 浏览

c++ - 使用 websocketcpp 编写一个简单的客户端

经过数小时尝试正确设置 boost 和 websocket++ 后,我现在尝试在 websocket++ 中实现一个简单的客户端,它只是向服务器发送一些消息。

我能找到的唯一例子是一个回显客户端,它只是响应 OnMessage()。没有其他方法可以向套接字发送消息吗?还是我需要定义其他一些事件,例如 OnConnection() 或 WhileRunning() 之类的?

我说的是 Zaphohyd Websocket++“Echo_Client”。简单的广播服务器按我想要的方式工作,但是我的客户端有问题,因为那里没有简单的向套接字发送消息的示例。

谢谢!

0 投票
0 回答
515 浏览

c++ - 我如何在多线程中使用带有 asio 的 websocket++ 作为 io_service per thread 模式?

我如何在多线程中使用带有 asio 的 websocket++ 作为 io_service per thread 模式?我想使用 websocket++ 作为多线程模式。名为“testee_server”的示例案例每个都从单个 io_service 调用 io_service::run()。我尝试按以下代码使用每个线程模式的 io_service。但发生段错误我该如何解决?