reactjs - 为什么我无法从 React/ReactNative 客户端应用程序监听 socket.io 事件?
问题描述
我是 socket.io 的新手,我将它与 react 和 react native 一起使用。在我的场景中,服务器发出一个“incomingBooking”事件。所以客户需要捕捉这个事件并在控制台中打印“预订详细信息”。
我尝试如下,但它对我不起作用。
export default class App extends Component<Props> {
componentDidMount () {
const socket = io.connect("http://localhost:3000/riders");
const username = "pawan@gmail.com";
const data = {
username: username,
room: username,
location: {
latitude: 6.8741,
longitude: 79.8605,
}
}
socket.emit('joinRoom', {room: username});
socket.emit('updateLocation', data);
socket.on('incomingBooking', function (details) {
console.log('Booking!!!', details);
});
console.log("Done")
}
render() {
return (
<Drawer/>
);
}
}
解决方案
你能描述一下你是如何从服务器发送信息的吗?
这个例子应该可以正常工作:
//server.js
const io=require('socket.io')();
io.on('connect',(socket)=>{
console.log('socket connected');
socket.on('updateLocation',(msg)=>{
console.log('updateLocation request');
socket.emit('incomingBooking',{
test:'data'
})
})
})
io.listen(3000)
注意:当你socket.on('eventName')
在客户端使用时,你必须socket.emit('eventName')
在服务器端使用,socket.send('something')
这是行不通的。
推荐阅读
- c++ - 使用仅头文件库的 Cpp 编译技术
- python - 从现有的常规索引数据框创建多级索引数据框
- python - 不理解输出中带小数的字符串格式()方法
- android - 与从命令行运行相比,Android Studio 安装了我的 react-native 应用程序的不同版本
- php - 如何在wordpress网站的主页上隐藏页脚
- java - 即时应用程序 - 具有可能触发存储错误的功能模块默认 FirebaseApp 未在此过程中初始化
- python - 负前瞻正则表达式python
- sql - 在类似运算符中选择多个值
- java - 列表
总是给出空值,直到数据被硬编码 - c# - C#中常量对象的常量数组