2013-05-15 125 views
0

在Raspberry Pi上運行有一臺服務器,該服務器通過字符串進行身份驗證後,每隔30秒向我發回一次智能插頭中的電源計量信息。這個服務器在端口50333上打開一個套接字。無法通過WebSocket連接樹莓派服務器

我可以在Eclipse中使用Java和Python打印響應,只需使用標準TCP Socket連接到它,但是當我嘗試在JavaScript中使用websocket時, 「T連接....

我曾嘗試:

var ws = new WebSocket("ws://l92.168.1.27:50333"); 

和:

var tcpsock = new TCPSocket("192.168.1.27", "50333"); 

,並沒有連接....我只是想知道是我的語法在這裏,還是可能有一些不明顯的潛在因素?

+0

你知道什麼網絡套接字實際上是?你確定你想要從JavaScript到服務器的雙向通信嗎?或者你只是想從JavaScript提出請求?什麼樣的服務器正在運行? – Ian

回答

0

WebSocket協議被命名有點誤導。它不是一個簡單的用於JS的TCP套接字,而是一個基於Http的更復雜的協議,涉及握手和封裝格式。您的服務器必須實施該協議才能連接到該協議。 RFC是非常有用的:http://tools.ietf.org/html/rfc6455

這不是很難實現,但我敢打賭,如果你真的需要它,有很多庫可以爲你做這件事。

+0

謝謝你們。雅我擔心會是這種情況Wutz ....我不知道什麼樣的服務器正在運行Ian,它是由家庭自動化公司開發的,他們也有一個閃光的WebApp,它做我的試圖做... 我的情況是:我目前正在試圖開發一個基於Django的Web應用程序,這將使初學者在頁面上顯示3個智能插頭數據(.0002千瓦等),並更新他們的信息每隔30秒從他們的服務器..我可以(在某種程度上)從一個單一的Python模塊或Java類輕鬆做到這一點,但我有麻煩翻譯過程到瀏覽器 – Daniel

+0

這可能是矯枉過正,但我​​唯一的想法因爲這將使用代理,永久保持TCP連接打開並將傳入數據發送到WebSocket客戶端。你可以自己創建它,也可以使用這裏提到的代理:http://stackoverflow.com/questions/15705049/connect-to-standard-socket-using-websocket?rq=1 – Wutz

+0

OK的歡呼。所以我不認爲會有一種方法來使用python模塊,我得到的答案是每30秒將字符串響應傳遞給瀏覽器? – Daniel