Poniżej znajduje się kod na przednim końcu, gdzie storeSelUserId
zawiera user_id wysłać wiadomości-Wyślij do poszczególnych użytkowników korzystających socket.io
FYI - węzeł Version 1.1.0
// Socket Notification
var socket = io('http://localhost:6868');
socket.on('connection', function (data) {
socket.emit('send notification', { sent_to: storeSelUserId });
});
Poniżej znajduje się kod serwera w pliku tras -
var clients = {};
io.on('connection', function (socket) {
socket.emit('connection', "Connection Created.");
socket.on('send notification', function (sent_to) {
console.log(sent_to);
});
});
w konsoli jest pokazując sent_to
array of user_id
.
Teraz jako starter w socket.io
utknąłem z rozwiązaniem, w jaki sposób wysłać wiadomość do tych konkretnych użytkowników.
wyszukiwać i okazało się, że muszę pchnąć każdego użytkownika z jego gniazda, więc zreformować go -
var users = [];
io.on('connection', function (socket) {
users.push({socket_id: socket.id});
socket.emit('connection', "Connection Created.");
socket.on('send notification', function (sent_to) {
console.log(sent_to);
});
});
Ale jestem w dylemat, że jeszcze muszę zrobić, żeby zapisywać, które user_id
odnosi się do którego socket_id, a następnie zaktualizować div użytkowników o te konkretne identyfikatory?
EDIT -
Dodaj Controller - (Front End)
Przednia Interfejs gdzie notatka jest tworzony i wysłać do poszczególnych użytkowników
var socket = io('http://localhost:6868');
socket.on('connection', function (data) {
socket.emit('send memo notification', {creator_id: creator_id, sent_to: [Array of user_ids to whom memo to send]});
});
kontroler Dashboard - (Przód)
Interfejs Zaczepy gdzie liczba powiadomienie, aby wyświetlić "notificationCount"
if (SessionService.currentUser._id) {
var socket = io('http://localhost:6868');
socket.on('connection', function (data) {
socket.emit('get notifications', {user_id: SessionService.currentUser._id});
});
socket.on('notification data', function(data){
console.log("-- Not Data Test -");
$scope.notificationCount = data.length;
});
}
kod na końcu serwera -
io.on('connection', function (socket) {
socket.emit('connection', "Connection Created.");
socket.on('send memo notification', function(data) {
notifications.createNotification(data);
});
socket.on('get notifications', function(data){
notifications.getNotifications(data, function(response){
socket.emit('notification data', response.data);
});
});
});
Backend kod kontrolera -
exports.getNotifications = function(data, callback) {
var userId = data.user_id;
Notification.find({receiver_id: userId}, function(err, response){
if (err)
callback({"message": "error", "data": err, "status_code": "500"});
else
callback({"message": "success", "data": response, "status_code": "200"});
});
};
exports.createNotification = function(data) {
var notificationData = data;
var x = 0;
for(var i=0; i< notificationData.length; i++) {
// Code
Notification(notificationData[i]).save(function(err,response){
if (err)
return false;
});
if (x === notificationData.length - 1) {
return true;
}
x++;
}
};
Proszę znaleźć moje edit..I nie dostaję automatyczną aktualizację na side..I klienckich muszą odświeżyć przeglądarkę wtedy tylko zmiana odzwierciedla – Trialcoder
Daj mi znać, jeśli coś nadal będzie niejasne. – Trialcoder