2017-03-04 18 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

回答

相關問題