1

我的要求是在我的三星智能电视应用程序中有一个监听套接字,以便从同一本地网络中的设备接收事件。

我一直在网上搜索执行此操作的方法,并且遇到了诸如Node.jsSocket.iowebsocket之类的术语。尽管我在 Web 开发方面理解这些术语(我认为),但我无法想象在我的三星智能电视应用程序中打开监听套接字的方法。

只是为了玩玩,我使用GCD 异步套接字在 iOS 上编写了一个 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() 。

didReadData我的服务器日志:

客户说: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

还尝试将消息从服​​务器回显到智能电视。这次我得到了日志

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

我知道我做错了什么……这是什么?请帮忙。

4

2 回答 2

0

您可以使用 socket.io 库让自己更轻松地使用 WebSockets。

您将在三星电视中包含一个 web 浏览器版本的 socket.io,如下所示:

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

其中一些 ip 地址是您控制的 nodejs 服务器的 ip 地址。

在您的服务器上,您需要安装带有 socket.io 服务器版本的 NodeJS。

于 2014-01-15T20:35:31.160 回答
0

您是否尝试过socket.io服务器和客户端库?

我们在 node.js 上有 socket.io 服务器,电视可以使用 socket.io-client 库连接到它。在 2012 年的电视上,它使用 websocket。在 2011 年的电视上,它使用 XHR 后备。

于 2013-05-09T09:36:41.027 回答