SAM4E,SARA-R412M使用带有网络套接字的FreeRTOS来创建聊天通信服务器远程主机

问题描述 投票:0回答:1

我想创建c聊天应用程序,已通过提供商(Telenor Norway,或...)使用SARA-R412M连接。该SARA-R412M也连接到SAM4E板上。在此应用程序将其构建为.bin文件后。

有人建议帮助我如何使用FreeRTOS使此网络套接字聊天应用程序正常工作?

Greeets Said

websocket at-command freertos modem
1个回答
0
投票

为了总结,在我进一步解释下一步该做什么之前,让我首先描述WebSockets的实际工作方式以及当前的位置。

要建立WebSocket连接,您首先需要使用HTTP与服务器“对话”,因为WebSockets的工作方式是向服务器发送HTTP请求,说“使用WebSockets进行对话”,此时服务器响应“确定,让我们切换协议”,只有在这一点上才可以使用WebSockets开始发送数据。更进一步,“ HTTP连接”通过TCP或TLS连接建立-取决于您是否需要单向或双向身份验证和数据加密之类的东西。因此,您必须先使用TCP或TLS(实际上实际上是“扩展的” TCP),然后才能进入HTTP部分。

假设您已完成上述所有操作,并与服务器建立了有效的WebSocket连接-实际上,您仅使用原始WebSocket交换聊天数据可能非常繁琐,而除此之外没有任何事情。当然,如果您打算交换只是原始聊天消息,仅此而已。但是,一旦开始增加其他要求-例如:让我们发送消息时间戳,发件人姓名,图片支持,文件支持等-就会变得非常烦人,无法真正快速地扩展,因为从本质上讲,您必须开始开发自己的通过WebSocket发送的自己的协议。原因是:简单的原始WebSockets除了“服务器发送给您X个字节,这就是它们”之外,没有给您任何其他好处。没有键值标题,消息的“ body”部分或类似内容的概念,只是原始数据传输机制。另外,根据您的服务器使用哪种技术堆栈(或者如果您是服务器后端的开发人员,则打算使用自己的技术),可能更难使其使用原始WebSocket,而不是在顶部运行其中。为了给您我的经验-我个人建议使用STOMP协议。即使要在大约一两天内实现其基本机制,它也足够简单,但可以为您提供更大的灵活性。

总结以上所有内容,这是前方的“全景”:enter image description here

现在(最后)自下而上地检查您的位置以及下一步应该做什么:

您已经提到您已经使用某种调制解调器成功连接到GSM网络。我假设您仅使用AT命令“连接到网络” / BTS,但尚未建立数据连接-进入“我有TCP工作”部分。在这里,您可以采取两种方式:

  1. 使用调制解调器的AT命令打开,发送和接收TCP数据。一些调制解调器具有集成的TCP / IP堆栈,并具有上述可用的AT命令。上行空间:如果您的目标是“完成任务”,它将更快。缺点:某些调制解调器不提供此功能,与通常的套接字API之类的命令相比,有时命令可能无法按预期运行,调制解调器之间可能会有差异(如果您决定在某个时候进行更改),您不会无法控制调制解调器的TCP / IP堆栈中发生的任何“魔术”,并且考虑到该区域中的错误实际上并不像人们最初想象的那样罕见-这可能很烦人。
  2. 使用PPP并将调制解调器与微控制器上运行的TCP / IP堆栈集成在一起。 Here我对如何将调制解调器与TCP / IP堆栈集成进行了更广泛的解释。

完成以上任一步骤之后,您应该能够与服务器建立TCP(或TLS,如果决定沿该路径访问)连接。一旦建立连接以便到达WebSocket部分,您需要发送一个HTTP请求-因此,您需要一个HTTP客户端。同样有两种可能的途径:要么由某人编写的HTTP客户端可以在您有限的微控制器资源上运行,要么自己编写一个-至少能够发送一个非常简单的HTTP GET请求。这并不像听起来那样可怕。要请求服务器切换到WebSocket,请求看起来像这样:

GET /chat HTTP/1.1
Host: server.example.com
Connection: Upgrade
Upgrade: websocket
Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==
Sec-WebSocket-Protocol: chat, superchat
Sec-WebSocket-Version: 13
Origin: http://example.com

一旦服务器响应,您应该有一个有效的WebSocket连接,在该位置实现(或准备好实现)WebSocket协议,并可能在其之上运行STOMP /类似/您自己的协议。

© www.soinside.com 2019 - 2024. All rights reserved.