私はRedis + laravel + nodejsを使ってメッセージをブロードキャストしています。私のコードはここにメッセージが放送されているhome.phpページに、コントローラでlaravelでRedisと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に
<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>
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();
});
});
ですログインしているすべてのユーザーに、この変更を1人のユーザーに変更したい
$redis = LRedis::connection();
$redis->publish('message_1990', $message);
と同様に、特定のユーザID
への広範な私ができる何かので、私のhome.php
に、私はいくつかをやって、この
<script>
var socket = io.connect('http://localhost:8890');
socket.on('message_1990', function (data) {
$("#message_1990").append("<p>"+data+"</p>");
});
</script>
私はJSONデータの代わりに同様のアプローチを適用しました。私は1つの文字列を '_ 'で区切って送りました。フロントエンドではJS配列に割り、' ID'をチェックしました。メッセージは 'Auth :: user-> ID'と同じです。メッセージはそのポップアップに追加されます:)。しかし、ここではすべてのユーザーがメッセージソケットを聞いている、すべてのユーザーが独自のソケットを聞く方法はありますか? – Vikram