reactjs - Socket.io-client 会循环并且从不响应事件
问题描述
我有一个 socket.io 聊天应用程序,我正在尝试为其制作一个反应前端。但是,socket.io-client
将无休止地连接到我的服务器,而无需进行任何调用,例如socket.emit()
使用socket.on()
. 这是我的后端:
var app = require('express')();
var http = require('http');
var server = http.createServer(app);
var io = require('socket.io')(server);
app.use(require('cors')());
io.on('connection', (socket) => {
console.log('new user connected');
io.to(socket.id).emit('msg', 'hello there');
socket.on('joining msg', ({id, username}) => {
console.log(username);
socket.broadcast.emit('chat message', `Everybody welcome ${username}\n`);
})
});
server.listen(4001, () => {
console.log('Server listening on :4001');
});
而我的前端是:
import React from "react";
import io from 'socket.io-client';
export default class App extends React.Component {
constructor(props) {
super(props);
this.state = {
data: ''
}
}
componentDidMount() {
const socket = io("http://localhost:4001");
socket.emit('joining msg', {id: 'test', username: 'test'})
socket.on('msg', (msg) => {
this.setState('data', msg);
});
}
render() {
return (
<p>{this.state.data}</p>
);
}
}
服务器控制台将无休止地记录new user connected
但从未真正记录它发出的客户端的用户名。如何防止循环并让我的应用程序正常工作?
解决方案
我所要做的就是socket.io
在我的服务器上更新版本,就是这样!
推荐阅读
- google-cloud-platform - BigQuery 中的参数化表名称
- python - Python 股票筛选器不会停止运行
- git - git:用我的新文件更新远程存储库
- python-3.x - 如何解决 TypeError: super(type, obj): obj must be an instance or subtype of type
- node.js - 回调未触发 node.js
- python - pip 没有使用 pip.conf 中定义的额外索引 url
- c# - 在 Active Directory 环境中将本地用户添加到本地管理员组
- python - 下载时重命名pdf文件
- .net - Visual Studio - 这是一个什么样的项目?
- javascript - 在 TypeScript 类型中使用一元加号运算符