我想创建c聊天应用程序,已通过提供商(Telenor Norway,或...)使用SARA-R412M连接。该SARA-R412M也连接到SAM4E板上。在此应用程序将其构建为.bin文件后。
有人建议帮助我如何使用FreeRTOS使此网络套接字聊天应用程序正常工作?
Greeets Said
为了总结,在我进一步解释下一步该做什么之前,让我首先描述WebSockets的实际工作方式以及当前的位置。
要建立WebSocket连接,您首先需要使用HTTP与服务器“对话”,因为WebSockets的工作方式是向服务器发送HTTP请求,说“使用WebSockets进行对话”,此时服务器响应“确定,让我们切换协议”,只有在这一点上才可以使用WebSockets开始发送数据。更进一步,“ HTTP连接”通过TCP或TLS连接建立-取决于您是否需要单向或双向身份验证和数据加密之类的东西。因此,您必须先使用TCP或TLS(实际上实际上是“扩展的” TCP),然后才能进入HTTP部分。
假设您已完成上述所有操作,并与服务器建立了有效的WebSocket连接-实际上,您仅使用原始WebSocket交换聊天数据可能非常繁琐,而除此之外没有任何事情。当然,如果您打算交换只是原始聊天消息,仅此而已。但是,一旦开始增加其他要求-例如:让我们发送消息时间戳,发件人姓名,图片支持,文件支持等-就会变得非常烦人,无法真正快速地扩展,因为从本质上讲,您必须开始开发自己的通过WebSocket发送的自己的协议。原因是:简单的原始WebSockets除了“服务器发送给您X个字节,这就是它们”之外,没有给您任何其他好处。没有键值标题,消息的“ body”部分或类似内容的概念,只是原始数据传输机制。另外,根据您的服务器使用哪种技术堆栈(或者如果您是服务器后端的开发人员,则打算使用自己的技术),可能更难使其使用原始WebSocket,而不是在顶部运行其中。为了给您我的经验-我个人建议使用STOMP协议。即使要在大约一两天内实现其基本机制,它也足够简单,但可以为您提供更大的灵活性。
现在(最后)自下而上地检查您的位置以及下一步应该做什么:
您已经提到您已经使用某种调制解调器成功连接到GSM网络。我假设您仅使用AT命令“连接到网络” / BTS,但尚未建立数据连接-进入“我有TCP工作”部分。在这里,您可以采取两种方式:
完成以上任一步骤之后,您应该能够与服务器建立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 /类似/您自己的协议。