Ich benutze Redis + Laravel + Nodejs, um Nachricht zu senden. Mein Code ist folgen alsWie sende ich eine Nachricht mit Redis und Nodejs mit Laravel
In Controller
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);
}
und in meinem 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();
});
});
dann auf home.php Seite
<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>
Hier wird die Nachricht gesendet wird, an alle Benutzer, die angemeldet sind, aber ich möchte dies auf nur einen Benutzer
ändernetwas, was ich kann breit bestimmten Benutzer-ID
Wie
$redis = LRedis::connection();
$redis->publish('message_1990', $message);
so in meinem home.php
kann ich den Code so etwas wie dieses haben
<script>
var socket = io.connect('http://localhost:8890');
socket.on('message_1990', function (data) {
$("#message_1990").append("<p>"+data+"</p>");
});
</script>
hehe danke für die Antwort Ich habe eine ähnliche Methode anstelle der JSON-Daten angewendet Ich habe eine einzelne Zeichenfolge mit '_' getrennt gesendet und im Frontend habe ich sie einfach in JS-Array geschnitten und überprüft die 'ID' der Die Nachricht ist die gleiche wie 'Auth :: user-> ID' Dann wird die Nachricht an ihr Popup angehängt :). Aber hier hört jeder Benutzer den Nachrichtensocket ab, gibt es einen Weg, wie jeder Benutzer auf seinen eigenen Socket hört, so dass, wenn wir veröffentlichen, er nur zu diesem bestimmten Benutzer geht? – Vikram