参照 realtime-laravel-app-with-socket-io
视频实现的
laravel 部分 给redis指定频道推送一条数据,
Route::get('redis', function () {
$data = [
'evnet' => 'test',
'data' => [
'name' => [1, 2, 3, 4, 4, 5, 667, 123],
],
];
\Redis::publish('test-channel', json_encode($data));
return view('welcome');
});
node.js
部分, 订阅一个 redis
的频道, 利用 socket.io
推送给前端
var http = require('http').Server();
var io = require('socket.io')(http);
var Redis = require('ioredis');
var redis = new Redis();
// 订阅频道
redis.subscribe('test-channel');
redis.on('message', function (channel, messages) {
messages = JSON.parse(messages);
console.log(messages, channel);
io.emit(channel, messages.data);
});
// web server
http.listen(3000, function () {
console.log('server listen');
});
html 部分, socket 监听 频道, 获取 node 给到的数据
var socket = io('192.168.88.20:3000');
socket.on('test-channel', function (data) {
console.log(data);
});
这样的每个打开的游览器都能够接受到数据,
可是实际中应该是根据 不同的用户去发送不同的数据, 我想过根据 UID 来实现, 但是现在 UID 是自增的, 如果我随便改下不就也能接受到别人的数据了吗,
这个判断应该在 laravel 完成还是 node 来完成呢?