stellaris 板上的 Websockets 运行 lwIP 1.3.2
Websockets on stellaris board running lwIP 1.3.2
我在做什么
正如标题所说,我正在 stellaris 开发板上实现一个 websocket 服务器。目前我能够与客户端建立连接并发送几帧。
我实现 websocket 的方式
我开发它的方式有点像主从通信。每当客户端发送一个字符串时,服务器都会对其进行解码然后进行应答。目前我只是在响应一个字符'e',它被设计成一个计数器。问题是我在客户端实现了 websocket 以在收到消息时发送 'e' 然后在页面上显示该消息。
问题
问题是它进行了大约 15 笔交易,然后我可以看到与 Stellaris 板的通信 re-transmitted,然后通信关闭。连接关闭后,我注意到我无法访问板上的任何其他页面。它根本不再响应。
我对可能导致它的原因的假设
这让我相信交易速度太快并且可能存在实现错误、lwIP 错误或硬件错误(我使用 enet_io 示例作为基础)。
我对如何修复它的假设
看到这个之后,我可以想象我需要的是控制发送到微控制器的字符串,以便它每秒发送一次,或者甚至更少,因为此刻它正在做大约 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 协议不需要请求-响应模型(建立握手的连接除外)。
服务器可以将数据流式传输到客户端,而不用担心来自客户端的任何响应或请求。
但是,通常的做法是偶尔从客户那里得到回复或 ping
,只是为了知道他们还活着。
这允许客户端在消息或 ping
无法到达服务器时更新连接 - 否则客户端可能不会注意到异常断开的连接(它只是假设没有发送更新,因为有没有新数据)。
即使没有信息交换,它也允许服务器知道连接仍然存在。
Is my supposition that slowing down my rates will work?
我想这个问题由于第一个问题的答案而变得不那么相关了...但是,我可能应该注意到网络套接字客户端(通常是浏览器)将具有有限的资源和不同的内存管理方案。
浏览器很容易被过多的数据淹没,因为它们经常保留对页面加载(或刷新)后所有交换的引用。
将事件记录到浏览器的控制台时尤其如此。
我在做什么
正如标题所说,我正在 stellaris 开发板上实现一个 websocket 服务器。目前我能够与客户端建立连接并发送几帧。
我实现 websocket 的方式
我开发它的方式有点像主从通信。每当客户端发送一个字符串时,服务器都会对其进行解码然后进行应答。目前我只是在响应一个字符'e',它被设计成一个计数器。问题是我在客户端实现了 websocket 以在收到消息时发送 'e' 然后在页面上显示该消息。
问题
问题是它进行了大约 15 笔交易,然后我可以看到与 Stellaris 板的通信 re-transmitted,然后通信关闭。连接关闭后,我注意到我无法访问板上的任何其他页面。它根本不再响应。
我对可能导致它的原因的假设
这让我相信交易速度太快并且可能存在实现错误、lwIP 错误或硬件错误(我使用 enet_io 示例作为基础)。
我对如何修复它的假设
看到这个之后,我可以想象我需要的是控制发送到微控制器的字符串,以便它每秒发送一次,或者甚至更少,因为此刻它正在做大约 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 协议不需要请求-响应模型(建立握手的连接除外)。
服务器可以将数据流式传输到客户端,而不用担心来自客户端的任何响应或请求。
但是,通常的做法是偶尔从客户那里得到回复或 ping
,只是为了知道他们还活着。
这允许客户端在消息或 ping
无法到达服务器时更新连接 - 否则客户端可能不会注意到异常断开的连接(它只是假设没有发送更新,因为有没有新数据)。
即使没有信息交换,它也允许服务器知道连接仍然存在。
Is my supposition that slowing down my rates will work?
我想这个问题由于第一个问题的答案而变得不那么相关了...但是,我可能应该注意到网络套接字客户端(通常是浏览器)将具有有限的资源和不同的内存管理方案。
浏览器很容易被过多的数据淹没,因为它们经常保留对页面加载(或刷新)后所有交换的引用。
将事件记录到浏览器的控制台时尤其如此。