我有一个客户端测试功能,它将测试对象发送到socket.io服务器,该服务器的工作是等待客户端事件,然后将数据发送到原始客户端发出事件的房间中的每个客户端。但是,只有原始客户端从服务器接收事件。房间中的其他客户端没有接收到它。
我已经尝试了io.in(room). emit()
以及io.to(room). emit()
服务器端。两个客户端肯定加入同一个房间。服务器也从原始客户端接收事件。
Server.js:
const express = require("express");
const app = express();
const server = require("http").createServer(app);
const io = require("socket.io").listen(server);
const port = process.env.PORT || 3000;
io.on("connection", socket => {
console.log("user connected: " + socket.id);
socket.on("test", test => {
console.log("received from client, emitting to room: " + test.room);
// io.to(test.room).emit("test", {key: "property from server"}
// io.in(test.room).emit("test", {key: property from server"}
})
})
server.listen(port, () => {
console.log("server running on port: " + port);
});
父组件:
const socket = io("http://172.31.99.250:3000");
export default class Lobby extends React.Component {
constructor(props) {
super(props);
this.state = {
username: "",
queue: [],
playerOne: null,
playerTwo: null,
currentMove: "",
matchFound: false,
room: null
};
}
componentDidMount() {
this.joinLobby();
}
joinLobby() {
socket.emit("findMatch() )
socket.on("matchFound", data => {
this.setState({
currentMove: data.currentMove,
playerOne: data.p1,
playerTwo: data.p2,
matchFound: true,
room: data.gameId
});
});
render() {
return this.state.matchFound == true ? (
<ChildComponent
room={this.state.room}
socket={socket}
/>
);
}
}
子组件:
export default class GameBoard extends Component {
constructor(props) {
super(props);
this.state = {
inProgress: true,
msg: null
}
componentDidMount() {
alert("Room ID: " + this.props.room);
}
onTest = () => {
this.props.socket.emit("test", {
testKey: "testProperty",
room: this.props.room
});
this.props.socket.on("test", response => {
alert("response received: " + response.key);
});
};
render() {
<View>
<TouchableOpacity
onPress={this.onTest}
/>
</View>
}
}
我希望在两个连接的客户端上读取服务器消息,原始事件是从房间里的每个客户端发送的,但是只有原始客户端接收服务器消息,而不是同一房间的第二个客户端
我认为在服务器上。你需要做的js
socket.join(test.room);
我想做的是: 为了学习游戏编程,我使用专用服务器和UDP创建了一个回声设置。专用服务器在不同的城市(也就是不在我的本地网络中)。 在我的本地计算机上,我有一个udp客户端和服务器(两个不同的程序)。当我第一次启动python服务器时,windows防火墙立即询问我是否要添加异常。在允许我的python服务器联网之后,我仍然没有收到任何消息。(客户- 我的问题是: 游戏如何解决这个问题?我没有为我想
使用套接字列表编辑: 按照EJP的建议,这样做我的问题就解决了。
问题内容: 我正在尝试用两个客户端实现一个系统,其中一个客户端发送一条消息,而另一个客户端将接收该消息。下图将以更直观的方式对其进行解释: 因此,客户端1将消息发送到服务器(此工作正常),服务器接收到“推送”消息并发出应由客户端2接收的“弹出”消息。这里的问题是客户端2从未收到“流行”消息。:( 这是所有代码。 SERVER.JS 客户1(aka mobile.html) 客户2(aka web.
我想配置TCP服务器以接收和回复来自多个客户端的数据。我搜索了许多其他线程,但找不到确切的方法。我第一次使用Spring集成,没有经验。 服务器要求 应该能够接收和回复特定客户端的数据(可以有多个客户端,每个客户端应该单独处理) 应该能够将数据发送到客户端并等待特定超时的响应。 应该能够检测客户端是否断开连接。如果客户端断开连接,则应关闭连接以节省内存。(在早期没有Spring集成的方法中,我可以
我正在尝试使用UDP在服务器(在公共IP上)和客户端(通过NAT)之间进行双向通信。我的逻辑是,如果服务器向IP和它接收数据包的端口发送一些数据,客户端仍然应该得到它,因为NAT最终会有将数据包发送到客户端的映射。 客户端有 2 个进程,一个用于发送数据包,另一个进程用于接收数据。服务器继续等待数据,如果它获得数据,它会将数据发送回从接收数据的端口和 IP。 客户代码如下: client_recv
客户端-NAT后面的Windows桌面,运行UDP客户端应用程序。 服务器-具有公共IP的Ubuntu服务器,运行一个UDP服务器应用程序,该应用程序期望在端口6000上发送数据包。 ClientPrivate/Public-客户端的私有/公共IP 服务器私有/公共 - 服务器的私有/公共 IP 客户端打开一个UDP套接字Client私人: 777和发送数据报Server公共: 6000 服务器从