C++ Websocket和消息的接收

C++ Websocket和消息的接收,c++,boost,websocket,boost-asio,C++,Boost,Websocket,Boost Asio,我尝试在boost下通过websocket创建一个服务器“消息”。 目前,我经常可以从服务器发送大消息或一系列消息。 当我点击“发送”时,它会发送大量数据。 困难在于,当服务器收到websocket消息中的命令时,如“停止”、“暂停”。。。此命令一直运行到上一条消息结束。我尝试停止执行上一个命令 我试图读取发送数据之间的缓冲区。但它不起作用。我尝试检查是否有一个接收订单的人使用async\u read\u some 我以 和HTTP服务器增强 你知道吗?我重复了几次代码,但我无法执行新的实时控

我尝试在boost下通过websocket创建一个服务器“消息”。 目前,我经常可以从服务器发送大消息或一系列消息。 当我点击“发送”时,它会发送大量数据。 困难在于,当服务器收到websocket消息中的命令时,如“停止”、“暂停”。。。此命令一直运行到上一条消息结束。我尝试停止执行上一个命令

我试图读取发送数据之间的缓冲区。但它不起作用。我尝试检查是否有一个接收订单的人使用async\u read\u some

我以 和HTTP服务器增强

你知道吗?我重复了几次代码,但我无法执行新的实时控件,因为它出现在最后


谢谢

如果数据已经发送到网络适配器,您几乎无法更改数据包的顺序。网络适配器将在到达时按您排队的顺序发送数据包

如果您希望能够发送“更高优先级”的消息,则不要一次性发送所有数据,而是将其保留在队列中,等待设备接收更多数据。如果收到高优先级消息,请在发送任何其他数据包之前发送该消息

不要使数据包太小,但我想如果一次生成几KB左右的数据包,它将非常快速地工作,并且仍然可以很好地控制流量


当然,这也要求接收者理解“可能存在不同的‘流’或‘流’信息,如果您发送‘暂停’命令,这意味着在发送‘恢复’之前,之前发送的流不会接收任何信息”。显然,根据您需要的行为调整这一点,但您确实需要一些方法,不仅要说“将‘STOP’作为数据放入流的其余部分”,还要将其解释为一个命令

如果在服务器接收到服务器接收到的所有数据之前,您在网络中以单个数据包的形式发送大型消息,则在您完成接收数据之前,您可能无法对其进行控制

最好实现优先级消息队列。从客户机和组装服务器将消息作为小块发送,而不是单个大数据包。为消息包(如停止(取消))提供高优先级。在服务器端接收消息时,如果存在任何高优先级消息(如停止(取消)),则不需要接受其余消息,您可以关闭服务器上的websocket连接


阅读该线程以了解更多信息。

当您使用Boost时,您是否看过(基于Boost/ASIO的)?

谢谢。我的方法和你们的相似。目前,我通过消息将数据分为几部分。我尝试在每次发送消息之间都没有成功,为了测试是否有类似“Stop”的消息来启动函数以完成剩余数据的发送,我尝试执行捕获缓冲并读取,以查看是否同时接收到新消息。它不起作用。但是,以下命令已收到,但已到达。一方面,我收到包含命令的消息,另一方面,我运行这些命令,并通过消息发送答案。您好,谢谢。我的代码考虑了消息的大小和优先级,但问题是我无法捕获两个程序之间的新消息。每次接收时,它都会检查接收到的消息,并确定消息中的命令(和函数),但在“发送”过程中,不会确定是否接收到新消息。我找到了一个解决方案,在每次分析新缓冲区时启动的线程中创建函数。您好,我想随后使用websocket++,但这会花费我更多的时间,我不确定它是否对我有帮助。我后来用线程找到了解决方案。非常感谢。