【发布时间】:2019-12-08 21:11:00
【问题描述】:
所以我有这个反应组件,它连接到端口 3000 上的快速服务器。快速服务器确实工作并在它们加载到大厅组件时记录“有人连接”和“用户断开连接”。但是,客户端的 on() 位似乎没有做任何事情。我从来没有收到“连接到后端”的消息来登录客户端控制台。据我所见,我没有收到错误,它确实连接到正确的命名空间(来自快速日志)。不知道为什么这不起作用。
import React, { useEffect } from 'react';
import io from 'socket.io-client';
import "./LobbyComponent.css";
function Lobby() {
useEffect(() => {
handleSocket();
}, []);
const handleSocket = () => {
const lobby = io('http://localhost:3000/lobby');
lobby.on('connection', function (socket){
console.log('connected to backend');
socket.on('disconnect', function(){
console.log('disconnected: ', socket);
});
});
lobby.on('chat message', function(msg){
console.log('message: ', msg);
});
};
return (
<div>
</div>
)
}
export default Lobby;
server.js 文件
let express = require("express");
let app = express();
let server = require('http').Server(app);
server.listen(PORT, () => {
console.log("Listening at:", PORT);
});
let io = require("socket.io").listen(server);
const chatNameSpace = io.of('/lobby');
chatNameSpace.on('connection', function(socket){
socket.emit('chat message', 'everyone');
console.log('someone connected');
socket.on('disconnect', function(){
console.log('user disconnected');
});
});
【问题讨论】: