【问题标题】:Can't connect Raspberry Pi server through WebSocket无法通过 WebSocket 连接树莓派服务器
【发布时间】:2013-05-16 00:23:37
【问题描述】:

在 Raspberry Pi 上运行着一台服务器,当它通过字符串进行身份验证时,它每 30 秒从我家的智能插头向我发送回电能计量信息。此服务器在端口 50333 上打开一个套接字。

我可以使用 Java 和 Python 在 Eclipse 中打印对控制台的响应,只需使用标准 TCP 套接字连接到控制台,但是当我尝试在 javascript 中使用 websocket 时,它就无法连接......

我试过了:

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

和:

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

而且它没有连接....我只是想知道我的语法是否在这里,或者可能有一些潜在的因素不是很明显?

【问题讨论】:

  • 你知道网络套接字到底是什么吗?您确定要从 JavaScript 到服务器的双向通信吗?或者您只是想从 JavaScript 发出请求?正在运行什么样的服务器?

标签: javascript websocket raspberry-pi


【解决方案1】:

WebSocket 协议的命名有点误导。它不是用于 JS 的简单 TCP 套接字,而是基于 Http 的更复杂的协议,涉及握手和包格式。您的服务器必须实现该协议才能连接到它。 RFC 非常有用:https://www.rfc-editor.org/rfc/rfc6455

实现起来并不难,但我敢打赌,如果你真的需要的话,有很多可用的库可以为你做这件事。

【讨论】:

  • 谢谢大家。是的,我担心 Wutz 会出现这种情况……我不确定 Ian 正在运行哪种服务器,它是由一家家庭自动化公司开发的,该公司也有一个闪存制作的 WebApp,它可以完成我的工作尝试做...我的情况是:我目前正在尝试开发一个基于 django 的 Web 应用程序,对于初学者来说,它将在页面上显示 3 个智能插头数据(.0002 kW 等)并更新他们的信息距离他们的服务器 30 秒..我可以(在某种程度上)从单个 python 模块或 java 类轻松地做到这一点,但我无法将进程转换到浏览器
  • 这可能有点矫枉过正,但我​​唯一的想法是使用代理,它永久保持 TCP 连接打开并将传入数据发送到 WebSocket 客户端。您可以自己创建它,也可以使用此处提到的代理:stackoverflow.com/questions/15705049/…
  • 好的,为此欢呼。所以我不认为有办法只使用我拥有的 python 模块,即每 30 秒获取响应并将字符串响应传递给浏览器?
  • 只能通过某种代理、websocket 或 HTTP。
猜你喜欢
  • 1970-01-01
  • 2023-02-04
  • 1970-01-01
  • 1970-01-01
  • 2015-10-17
  • 1970-01-01
  • 2016-11-19
  • 2018-11-20
  • 1970-01-01
相关资源
最近更新 更多