【发布时间】:2016-07-11 17:53:57
【问题描述】:
我正在使用 Redis+laravel+nodejs 来广播消息。我的代码如下
在控制器中
function postReassignlead(Request $request){
$data = Input::get();
$leadId = $data['leadid'];
$assignedtoid = $data['assignedtoid'];
$assignedbyid = $data['assignedbyid'];
$message = "A lead :".$leadId," has been assigned to YOU by ".$assignedbyid."";
$redis = LRedis::connection();
$redis->publish('message', $message);
}
在我的 server.js 中
var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);
var redis = require('redis');
server.listen(8890);
io.on('connection', function (socket) {
console.log("new client connected");
var redisClient = redis.createClient();
redisClient.subscribe('message');
redisClient.on("message", function(channel, message) {
console.log("mew message in queue "+ message + "channel");
socket.emit(channel, message);
//res.flush();
});
socket.on('disconnect', function() {
redisClient.quit();
});
});
然后在 home.php 页面上
<script src="//code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
<script src="https://cdn.socket.io/socket.io-1.3.4.js"></script>
<div class="container">
<div class="row">
<div class="col-lg-8 col-lg-offset-2">
<div id="messages"></div>
</div>
</div>
</div>
<script>
var socket = io.connect('http://localhost:8890');
socket.on('message', function (data) {
$( "#messages" ).append( "<p>"+data+"</p>" );
});
</script>
这里的消息正在广播给所有登录的用户,但我想把它改为只有一个用户
我可以将其扩展到特定用户 ID
喜欢
$redis = LRedis::connection();
$redis->publish('message_1990', $message);
所以在我的 home.php 中
我可以有这样的代码
<script>
var socket = io.connect('http://localhost:8890');
socket.on('message_1990', function (data) {
$( "#message_1990" ).append( "<p>"+data+"</p>" );
});
</script>
【问题讨论】:
标签: php node.js redis laravel-5.1 node-redis