Pusher authEndpoint 不会在 React Native Expo 中触发
Pusher authEndpoint doesn't trigger in react native expo
这是我在本机反应代码上的代码:
const pusher = new Pusher('app_key', {
cluster: 'ap1',
authEndpoint: 'http://10.0.27.124:8070/pusher/auth'
});
const channel = pusher.subscribe('my-channel');
channel.bind('uuganaa', function (data) {
alert(JSON.stringify(data));
});
在节点 js 代码中:
app.post('/pusher/auth', (req, res) => {
let socketId = req.body.socket_id;
let channel = req.body.channel_name;
random_string = Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, 5);
let presenceData = {
user_id: random_string,
user_info: {
username: '@' + random_string,
}
};
let auth = pusher.authenticate(socketId, channel, presenceData);
res.send(auth);
});
这是我的日志:
Pusher : : ["State changed","initialized -> connecting"]
Pusher : : ["Connecting",{"transport":"ws","url":"wss://ws-ap1.pusher.com:443/app/73286f08a5b2aeeea398?protocol=7&client=js&version=7.0.3&flash=false"}]
Pusher : : ["State changed","connecting -> connected with new socket ID 12784.212561977"]
Pusher : : ["Event sent",{"event":"pusher:subscribe","data":{"auth":"","channel":"my-channel"}}]
这里称为事件日志:
Pusher : : ["Event recd",{"event":"uuganaa","channel":"my-channel","data":{"message":"Sain uu asd"}}]
并将请求发送到 http://10.0.27.124:8070/pusher/auth 来自 auth 端点的响应成功响应。
为什么它不触发 authEndpoint
谢谢你的回答。
那是因为您正在为用户订阅 public 频道。 Public 频道不需要授权连接。您需要为用户订阅私人频道。
https://pusher.com/docs/channels/using_channels/authorized-connections/
https://pusher.com/docs/channels/using_channels/private-channels/
这是我在本机反应代码上的代码:
const pusher = new Pusher('app_key', {
cluster: 'ap1',
authEndpoint: 'http://10.0.27.124:8070/pusher/auth'
});
const channel = pusher.subscribe('my-channel');
channel.bind('uuganaa', function (data) {
alert(JSON.stringify(data));
});
在节点 js 代码中:
app.post('/pusher/auth', (req, res) => {
let socketId = req.body.socket_id;
let channel = req.body.channel_name;
random_string = Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, 5);
let presenceData = {
user_id: random_string,
user_info: {
username: '@' + random_string,
}
};
let auth = pusher.authenticate(socketId, channel, presenceData);
res.send(auth);
});
这是我的日志:
Pusher : : ["State changed","initialized -> connecting"]
Pusher : : ["Connecting",{"transport":"ws","url":"wss://ws-ap1.pusher.com:443/app/73286f08a5b2aeeea398?protocol=7&client=js&version=7.0.3&flash=false"}]
Pusher : : ["State changed","connecting -> connected with new socket ID 12784.212561977"]
Pusher : : ["Event sent",{"event":"pusher:subscribe","data":{"auth":"","channel":"my-channel"}}]
这里称为事件日志:
Pusher : : ["Event recd",{"event":"uuganaa","channel":"my-channel","data":{"message":"Sain uu asd"}}]
并将请求发送到 http://10.0.27.124:8070/pusher/auth 来自 auth 端点的响应成功响应。
为什么它不触发 authEndpoint 谢谢你的回答。
那是因为您正在为用户订阅 public 频道。 Public 频道不需要授权连接。您需要为用户订阅私人频道。
https://pusher.com/docs/channels/using_channels/authorized-connections/
https://pusher.com/docs/channels/using_channels/private-channels/