设置 React 组件来监听 socket.io

ric*_*ver 3 javascript express socket.io reactjs

我希望我的 React 组件监听来自 socket.io 的事件。如果我的 HTML 文件包括:

<script src="socket.io/socket.io.js"></script>

然后组件的构造函数()有:

this.socket = io(); // eslint-disable-line no-undef

HTML 文件从我的 Express 服务器检索正确的 socket.io 客户端代码,一切正常。

但这感觉太俗气了。我讨厌依赖全局窗口名称空间来查找 io() 函数。让 React 组件通过 socket.io 连接到服务器的最佳实践是什么?谢谢。

rob*_*lep 5

如果您使用的是 Webpack 或 Browserify 之类的打包器,则可以使用socket.io-client.

例如:

const io = require('socket.io-client');

class MyComponent extends React.Component {
  constructor(...args) {
    super(...args);
    this.socket = io();
  }
  ...
}
Run Code Online (Sandbox Code Playgroud)

  • 是的,这很好用!@martriay 建议使用生命周期方法 (`componentWillMount`) 可以更精细地控制套接字何时连接/断开连接。谢谢! (2认同)