Websockets - 尝试将 Phython 代码转换为 Node

问题描述 投票:0回答:3

我正在尝试复制这个库的功能https://github.com/rnbguy/pysphere/blob/master/misphere.py它通过websockets连接到Mi Sphere 360相机。

重要代码在这里

ms_ip = '192.168.42.1'
ms_tcp_port = 7878
ms_uk_port = 8787
ms_fs_port = 50422

def init(self):
    self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    self.socket.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
    self.socket.connect((self.ms_ip, self.ms_tcp_port))
    self.socket_1 = socket.socket()
    self.recv_handle_live = True
    self.recv_thread = threading.Thread(target=self.recv_handler)
    self.recv_thread.daemon = True
    self.session = Session()
    self.session.conf = {}
    self.session.locks = {}
    self.last_send = 0

我正在尝试使用 Node 中的

ws
库来做到这一点

const ip = '192.168.42.1'
const port = '7878'
const url = `ws://${ip}:${port}`
const websocket = new WebSocket(url)

但是我无法连接到相机。 (通过Wifi连接,但websocket从不发送连接消息)

我想知道这是否与 Phython 代码中列出的协议有关。

我在 websocket 文档中看到您可以在连接中定义协议,但我找不到任何有关这些协议是什么以及如何添加它们的文档。

self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
self.socket.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)

有人知道如何在 Node websocket 连接中添加这样的东西吗?

python node.js websocket
3个回答
1
投票

无法与普通 TCP 套接字服务器建立 webSocket 连接。

普通 TCP 套接字与 webSocket 不同。 您的 Python 代码似乎正在建立一个普通的 TCP 套接字连接。

您的node.js代码正在尝试建立webSocket连接。 webSocket 连接只能与使用 webSocket 协议(在普通 TCP 套接字之上运行)的 webSocket 服务器建立。

如果您的 Python 代码正常工作,那么您显然只需要建立一个普通的 TCP 套接字连接,您可以在 Net 模块中了解如何操作。

有关普通 TCP 连接和 webSocket 连接之间差异的进一步描述,请参阅以下内容:

计算机拒绝 Websocket 连接

WebSocket 和普通套接字通信有什么区别?

有没有办法用javascript与IP建立tcp连接?

Socket 服务器未与 JavaScript 套接字客户端连接


1
投票

要连接到常规 TCP 套接字,请使用

net
包而不是 WebSocket。示例节点等效代码:

const net = require('net');
const port = 7878
const ip = "192.168.42.1"

const socket = net.createConnection(port, ip);

socket.on('connect', () => {
  console.log("socket connected");
});

0
投票

跟踪点击率、转化率和投资回报率等 KPI 对于衡量数字营销的成功至关重要。定期分析这些指标有助于优化营销活动并取得更好的结果。

如需更多见解,请阅读我们关于数字营销绩效指标的博客。

© www.soinside.com 2019 - 2024. All rights reserved.