gpt4 book ai didi

c - 运行 lwIP 1.3.2 的 stellaris 板上的 Websockets

转载 作者:太空宇宙 更新时间:2023-11-04 03:23:10 27 4
gpt4 key购买 nike

我在做什么

如标题所示,我正在 stellaris 板上实现一个 websocket 服务器。目前我能够与客户端建立连接并发送几帧。

我实现 websocket 的方式

我开发它的方式有点像主从通信。每当客户端发送一个字符串时,服务器都会对其进行解码然后进行应答。目前我只是在响应一个字符“e”,它被设计成一个计数器。问题是我在客户端实现了 websocket 以在收到消息时发送“e”,然后在页面上显示该消息。

问题

问题是它进行了大约 15 笔交易,然后我可以看到通信在 Stellaris 板之间重新传输,然后通信关闭。连接关闭后,我注意到我无法访问板上的任何其他页面。它根本不再响应。

我对可能导致它的原因的假设

这让我相信交易速度太快并且可能存在实现错误、lwIP 错误或硬件错误(我使用 enet_io 示例作为基础)。

我对如何修复它的假设

看到这个之后,我可以想象我需要的是控制发送到微 Controller 的字符串,以便它每秒发送一次,或者甚至更少,因为此刻它正在做大约每秒 1000 个事务并且有时更多。

问题

所以......在我的试验之后,我还有一些问题需要回答。 websockets 需要这种关系吗?客户端请求和服务器服务的地方?或者只要连接打开,我就可以简单地将数据从服务器流式传输到客户端吗?我认为降低利率会奏效吗?

最佳答案

Do websockets need this kind of relationship [request-response]? Where client asks and server serves? Or can I simply stream data from the server to the client as long as the connection is open?

Websocket 协议(protocol)不需要请求-响应模型(建立握手的连接除外)。

服务器可以将数据流式传输到客户端,而不用担心来自客户端的任何响应或请求。

但是,通常的做法是偶尔从客户端获得响应或 ping,只是为了知道它们还活着。

这允许客户端在消息或 ping 未能到达服务器时更新连接 - 否则客户端可能不会注意到异常断开的连接(它只会假设没有发送更新,因为没有新数据)。

即使没有信息交换,它也允许服务器知道连接仍然存在。

Is my supposition that slowing down my rates will work?

我想由于第一个问题的答案,这个问题变得不那么相关了……但是,我可能应该注意到 Web 套接字客户端(通常是浏览器)将拥有有限的资源和不同的内存管理方案。

浏览器很容易被过多的数据淹没,因为它们经常保留对页面加载(或刷新)后所有交换的引用。

将事件记录到浏览器的控制台时尤其如此。

关于c - 运行 lwIP 1.3.2 的 stellaris 板上的 Websockets,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43508637/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com