如何将数据从客户端发送到redis然后再发送到laravel

Mr.*_*eer 13 php redis node.js laravel node-redis

我正在使用laravel和redis进行实时聊天.我可以从我的laravel中触发事件并将该数据接收到客户端.

我的问题是如何从客户端发送内容然后将其接收到redis并将其传递给laravel

例如,我如何检查用户是否已阅读聊天消息.

代码:

var express = require('express');
var app     = express();
var server  = require('http').createServer(app);
var io      = require( 'socket.io' ).listen( server );
var redis = require('redis');
var port = process.env.PORT || 8888;
server.listen(port,'x.x.x.x');

io.on('connection', function (socket) {
   console.log("Connected");
});
var redisClient = redis.createClient();
redisClient.psubscribe(['get_message','read_message']);
redisClient.on("pmessage", function(channel, pattern, message) {
    console.log(channel); // i can see get_message on this line in console but not read_message
});

//Also tried this
io.on('read_message', function (socket) {
   console.log(socket);
});
//Also this
redisClient.on('read_message', function (socket) {
   console.log(socket);
});

redisClient.on('disconnect', function() {
    console.log("Disconnected");
    redisClient.quit();
});
Run Code Online (Sandbox Code Playgroud)

注意:我从IOS应用程序发出数据.

Jac*_*son 5

Redis 是一个键/值存储引擎。您应该将其视为数据库。

客户端向网络服务器发送请求,网络服务器接收该请求并决定如何处理该请求。对于需要服务器端处理的请求,它将将该请求传递给服务器端“引擎”进行处理,在您的情况下,可能是 PHP-FPM,然后将其传递给 PHP 守护程序,然后该守护程序将执行该请求。

Redis 无法以这种方式解释请求。因此,必须用 Laravel 拦截请求,然后发送到 Redis。反之则不然。

如果您尝试让 Laravel 从 Redis 获取信息,您将需要使用Redis 的 pub/sub 功能。然后,您可以让 Laravel 订阅 Redis 更新、获取更新并根据需要保留或处理数据。

phpredis lib支持 pub/sub 功能。

下面是使用该库的 PHP 实现示例。 https://xmeng.wordpress.com/2011/11/14/pubsub-in-redis-using-php/