Задача такая:
Нужно уведомлять пользователя о событиях на сервере например при формировании события в php скрипте, который отправляет данные по POST запросу на https://site.ru/notifi, там стоит вебсокет к которому подключены пользователи. При совпадении ID подключенного посетителя и ID в пришедшем запросе отправлять данные этому подключенному посетителю.
Как это сделать в настройках сервера Socket.ioи nodejs?
Как-то начал, но запутался, вот код:
var express = require('express');
var app = express();
var logger = require('log4js').getLogger();
var server = require('http').Server(app);
var io = require('socket.io')(server);
var port = 4444;
server.listen(port, '92.315.139.149', function(){
var addr = server.address();
logger.debug('listening on '+addr.address+':' + addr.port);
});
app.get('/websocket', function(req,res){
res.send('Hello world! I\'m your first server!');
logger.debug('listening on');
});
// тесты
app.get('/websocket/:username', function(req,res){
res.send('Hello '+req.params.username+'!');
});
// Пишем прием пост запроса
app.post('/notify', function (req, res) {
const userIds = req.body.user_ids; // берем из body список пользователей, которым нужно отправить уведомление
const data = req.body.data; // уведомление
userIds.forEach(userId => {
// проверяем что пользователь онлайн
if (io.sockets.connected[userId] !== undefined) {
// отправляем ему уведомление
io.sockets.connected[userId].emit('event', data);
}
});
res.json({ status: 'OK' });
});
Имеется следующий PHP код, цикл не хочет запускаться по какой-то причине, описанной в ошибкеPHP говорит, что нужно поставить запятую или точку...