2013-04-23 97 views
1

我的要求是在我的三星智能電視應用程序中有一個監聽套接字,以便接收來自同一本地網絡中的設備的事件。在三星智能電視上使用WebSockets

我一直在網上搜索的方法來做到這一點,我遇到的術語來了,如同Node.js的Socket.io的WebSocket。即使我理解這些術語在Web開發方面(我認爲),但我無法想象在三星智能電視應用程序中打開偵聽套接字的方法。

只是爲了玩遊戲,我在iOS上使用GCD Async Sockets寫了一個TCP服務器代碼,並想到將它連接到智能電視併發送歡迎消息。 這是我的智能電視代碼 -

//var wsUri = "wss://echo.websocket.org/"; 
var wsUri = "ws://192.168.1.116:9898/"; 
//var output; 
var webSocketObj={}; 

webSocketObj.init = function() 
{ 
    //output = document.getElementById("output"); 
    this.testWebSocket(); 
}; 

webSocketObj.testWebSocket = function() 
{ 
    websocket = new WebSocket(wsUri); 
    websocket.onopen = function(evt) { onOpen(evt); }; 
    websocket.onclose = function(evt) { onClose(evt); }; 
    websocket.onmessage = function(evt) { onMessage(evt); }; 
    websocket.onerror = function(evt) { onError(evt); }; 
}; 

    function onOpen(evt) 
    { 
    writeToScreen("CONNECTED"); 
    doSend("WebSocket rocks"); 
    } 

    function onClose(evt) 
    { 
    writeToScreen("DISCONNECTED"); 
    } 

    function onMessage(evt) 
    { 
    writeToScreen('<span style="color: blue;">RESPONSE: ' + evt.data+'</span>'); 
    websocket.close(); 
    } 

    function onError(evt) 
    { 
    writeToScreen('<span style="color: red;">ERROR:</span> ' + evt.data); 
    } 

    function doSend(message) 
    { 
    writeToScreen("SENT: " + message); 
    websocket.send(message); 
    } 

    function writeToScreen(message) 
    { 
    /* var pre = document.createElement("p"); 
    pre.style.wordWrap = "break-word"; 
    pre.innerHTML = message; 
    output.appendChild(pre);*/ 
     alert('SOCKET HELPER SAYS : '+message); 
    } 

我有一個按鈕,我打電話webSocketObj.init()點擊按鈕。

客戶說:GET/HTTP/1.1

日誌從的SmartTV:

[JS ALERT]: Scenewebsocket.handleKeyDown(29443) 
[JS ERROR]: 
File:   file:// 
Line No:  0 
Error Detail: 
[JS ALERT]: SOCKET HELPER SAYS : DISCONNECTED 

ALSO我想呼應的我的服務器didReadData

日誌消息從服務器返回到智能電視。而這一次,我得到了日誌

Client says : GET/HTTP/1.1 
Client says : Upgrade: WebSocket 
Client says : Connection: Upgrade 
Client says : Host: 192.168.1.116:9898 
Client says : Origin: file:// 
Client says : Sec-WebSocket-Key1: 1504l73 8Ew/J 4 ,L7W6 
Client says : Sec-WebSocket-Key2: TK2 81d A64Bo7 118 0 

我知道我在做一些可怕的錯誤......它是什麼?請幫助。

回答

0

您是否試過socket.io服務器和客戶端庫?

我們在node.js上有socket.io服務器,電視可以使用socket.io-client庫連接到它。在2012年電視上它使用websocket。在2011年的電視上,它使用XHR後備。

+0

所以node.js代碼將被寫入相同的智能電視應用代碼?我的意思是問node.js服務器將在智能電視上運行? – 2013-05-09 10:05:00

+0

不,你不能在電視上創建任何監聽套接字,node.js在託管服務器上運行,並且電視連接到它作爲客戶端 – 2013-05-10 11:55:14

+0

我在我的應用程序上有socket.io,但它不適用於我的智能電視三星。您是否與智能電視模型aund web sockets支持有任何聯繫? – vrunoa 2014-07-30 02:48:29

0

您可以使用socket.io庫讓自己更容易使用WebSockets。

您將包括在三星電視一socket.io的web瀏覽器版本是這樣的:

<script src="http://*some ip address*/socket.io/socket.io.js"></script> 

一些IP地址是自己控制的服務器的NodeJS的IP地址。

在您的服務器上,您需要安裝帶有socket.io服務器版本的NodeJS。