是否可以在不使用 Web 浏览器的情况下通过 websockets 交谈?
Posted
技术标签:
【中文标题】是否可以在不使用 Web 浏览器的情况下通过 websockets 交谈?【英文标题】:Is it possible to talk through websockets without using web browser? 【发布时间】:2017-03-04 19:00:09 【问题描述】:我在我的服务器上使用节点 websocket ws
模块,我想从我的服务器向我的嵌入式设备(Arduino/GPRS 模块 SIM808)发送命令。我也用过HTTP,但是每次我的设备建立连接发送请求都需要很长时间。
我应该在 arduino 上运行下面编写的客户端来建立与 webSocket ws
sever 的连接。但在我的嵌入式设备上,我没有浏览器,只能将AT
命令发送到套接字。
var ws = new WebSocket('ws://'+location.host);
ws.onopen = function open()
// ws.send('something from client');
;
ws.onmessage = function incoming(data, flags)
console.log(data, flags);
// flags.binary will be set if a binary data is received.
// flags.masked will be set if the data was masked.
;
function sendMessage(input)
ws.send('From Client:' +input);
有什么方法可以通过我的嵌入式设备和网络服务器建立套接字通信,我如何在不使用网络浏览器的情况下与网络套接字服务器通信?
【问题讨论】:
我对什么是客户端和什么是服务器感到困惑。客户端将连接到服务器。您的 arduino 扮演什么角色(客户端或服务器)?浏览器只能是客户端,不能是服务器。 另外,请记住,webSocket 与常规套接字不同。因此,如果您希望通过常规套接字向您的 arduino 发送 AT 命令,那么您不能直接使用 webSocket 连接来执行此操作。你需要一个常规的 TCP 连接来做到这一点。但是,您可以在您的 arduino 上放置一个 webSocket 服务器,并且浏览器可以连接到该服务器,然后您的 arduino 上的 webSocket 服务器可以向自身发送所需的 AT 命令以响应传入的 webSocket 消息。 @jfriend00 感谢您的 cmets,我将使用 arduino 作为客户端,并且我已经将我的 webSocket 服务器代码部署到 Heroku,服务器工作正常,但是当我给我的 arduino 板提供主机名时和我的 webSocket 服务器的端口号AT+CIPSTART="TCP",<domain name>,<port>
来自串行监视器,它以 TCP CLOSED
响应,这意味着没有检测到该地址。
您的 arduinio 上的串行监视器是否特别支持 webSockets? webSocket 连接与普通 TCP 连接不同。为了连接到 webSocket 服务器,必须遵循 webSocket 协议和数据帧格式以及安全握手。
【参考方案1】:
是的,您可以在 Arduino 使用 WebSockets。
有很多 WebSocket 客户端:
https://github.com/krohling/ArduinoWebsocketClient https://github.com/TheThingSystem/Arduino-Websocket https://github.com/u0078867/Arduino-Websocket-Fast【讨论】:
以上是关于是否可以在不使用 Web 浏览器的情况下通过 websockets 交谈?的主要内容,如果未能解决你的问题,请参考以下文章
我可以在不显示 web 视图的情况下使用 phonegap 吗?
如何在不手动检查的情况下确定网站是不是使用 webassembly?