【发布时间】:2021-06-25 19:38:59
【问题描述】:
我正在寻找物联网项目的最佳 WS 解决方案。我目前正在使用 Web Sockets 测试我的选项。到目前为止,我已经尝试了两个 NPM 库“ws”和“websockets”。他们工作得很好,NodeJS 和 ReactJS 的实现都很简单。我现在正在尝试 websocket.io。阅读文档我很难创建一个简单的工作示例,直接从文档中复制代码。由于测试代码如此简单,我真的很困惑,尤其是在对之前的两个包进行了积极体验之后。我很确定我做错了什么,但我无法发现我的错误。我非常感谢任何人帮助发现我做错了什么。
NodeJS 服务器实例监听 8000 端口(基于此处的示例:https://socket.io/docs/v4/server-initialization/):
const io = require("socket.io")();
io.on("connection", socket => {
console.log('blip')
});
io.listen(8000);
React 客户端尝试从 2000 端口连接到 NodeJS 服务器:
import React from "react";
import { io } from "socket.io-client";
class Io extends React.Component {
state = {
wsConnected: false
}
componentDidMount() {
const socket = io.connect('http://localhost:8000');
socket.on("connect", () => {
console.log('connect',socket.id);
});
}
render() {
const { wsConnected } = this.state;
return (
<div>{wsConnected ? 'on' : 'off'}</div>
)
}
}
export default Io
【问题讨论】:
-
客户端库和服务器库是否在同一主版本中?
-
@cybercoder 好问题,它们都是同一个版本:4.0.0
-
试试这个:
const socket = io("ws://localhost:8000", { transports: ["websocket"] });incomponentDidMount -
@cybercoder 有效。我猜这将限制我现在只能使用 WebSocket。
-
@xyz83243 我现在写一个完整的答案。