2017-03-04 61 views
0

我在我的服务器上使用节点websocket ws模块,我想从我的服务器向我的嵌入式设备(Arduino/GPRS模块SIM808)发送命令。我也使用过HTTP,但每次我的设备建立连接发送请求时都需要很长时间。是否可以在不使用Web浏览器的情况下通过websockets进行通信?

我应该运行下面写在arduino上的客户端来建立与webSocket ws服务器的连接。但在我的嵌入式设备上,我没有浏览器,只能将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); 
} 

有什么办法,我可以通过我的嵌入式设备和网络服务器建立socket通信,我怎么可以跟web套接字服务器,而不使用网络浏览器?

+0

我感到困惑什么是客户,什么是服务器。客户端将连接到服务器。你的arduino扮演了哪个角色(客户端或服务器)?浏览器只能是客户端,不能是服务器。 – jfriend00

+0

另外,请记住webSocket与普通套接字不同。所以,如果您希望通过常规套接字将AT命令发送到您的arduino,那么您不能直接使用webSocket连接。你需要一个普通的TCP连接来做到这一点。然而,你可以在你的arduino上放置一个webSocket服务器,并且浏览器可以连接到这个服务器上,然后你的arduino上的webSocket服务器就可以发送所需的AT命令来响应传入的webSocket消息。 – jfriend00

+0

@ jfriend00感谢您的意见,我将使用arduino作为客户端,并且我已经将我的webSocket服务器代码部署到Heroku,服务器工作正常,但是当我给我的arduino板登录webSocket服务器的主机名和端口号时来自串行监视器的AT + CIPSTART =“TCP”,,',它用'TCP CLOSED'来响应,这意味着没有检测到该地址。 – developer

回答

相关问题