【发布时间】:2018-10-10 08:54:54
【问题描述】:
我使用laravel 5.3 + 护照进行授权,Laravel 是我的后端API,即restful。
前端是用angular.js 编写的,它通过休息请求与API 通信。
对于实时通知,我在angular.js. 中使用laravel 广播事件+redis 和socket.io 用于套接字服务器和套接字客户端
我想授权这些活动,我已经尽力做到了:
广播服务提供者:
public function boot()
{
Broadcast::routes(['middleware' => ['auth:api']]);
Broadcast::channel('App.User.*', function ($user, $userId)
{
return (int) $user->id === (int) $userId;
});
Broadcast::channel('notifs.*', function ($user, $userId) {
return $user->id === (int) $userId;
});
}
这是运行我的套接字服务器的 socket.js 代码:
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var Redis = require('ioredis');
var redis = new Redis();
redis.psubscribe('*', function(err, count) {});
redis.on('pmessage', function(subscribed, channel, message) {
console.log(channel);
message = JSON.parse(message);
io.emit(channel + ':' + message.event, message.data);
});
http.listen(3000, function () {
console.log('Listening on Port 3000');
});
redis.on("error", function (err) {
console.log(err);
});
问题是我不知道如何在套接字服务器中验证这些广播事件,也不知道如何授权angular.js (SPA) 中的用户收听这些事件。
我将不胜感激。
【问题讨论】:
-
看过socketio-auth?上次我必须对套接字服务器端进行身份验证时,我只是推出了我自己的基于令牌 (HMAC) 的东西。
-
@ficuscr 可以看看吗:stackoverflow.com/questions/50187836/…
标签: php node.js sockets laravel-5 socket.io