Как я могу передать данные другому клиенту (пользователю) с помощью socket.io? - PullRequest
0 голосов
/ 08 июня 2019

Я отправляю данные всем клиентам, но это только ПРИЛОЖЕНИЕ к телу сообщения отправителя. В этом случае данные в режиме реального времени работают только на отправителя, но мне нужно работать с каждым подключенным пользователем.

После прочтения документации говорится, что BROADCASTING может быть решением, но оно не отображается для отправителя (что означает ОК), но это также не отображается для других подключенных получателей.

Custom.js

var socket = io.connect("http://localhost:3000/");
    $.ajax({
     url: 'sent',
     type: 'POST',
     data: {
      msg: 'Some message'
     },
     dataType: "json",
     success: function (data) {
      if (data.message) {
        socket.emit('send', {
         msg: data.msgResult
        });
        socket.on('msgResult', result => {
         $(".msgDiv").append(result);
        });
      }
     }
    });

App.js

const app = express();
const http = require("http").Server(app);
const io = require("socket.io")(http);

io.on('connection', (socket) => {
console.log('Socket.io connected...');
socket.on('send', (data) => {
socket.emit('msgResult', data.msg);
});
socket.on('disconnect', () => {
console.log("A socket Discounted ..");
});
});

Я хочу добавить данные всем подключенным пользователям, включая отправителя.

Ответы [ 4 ]

0 голосов
/ 09 июня 2019

Наконец я нашел свой ответ.Это была простая ошибка, которая отнимает много времени.

custom.js

var socket = io.connect("http://localhost:3000/");
$.ajax({
     url: 'sent',
     type: 'POST',
     data: {
      msg: 'Some message'
     },
     dataType: "json",
     success: function (data) {
      if (data.message) {
        socket.emit('send', {
         msg: data.msgResult
        });
      }
    }
});

socket.on('msgResult', result => {
$(".msgDiv").append(result);
});

App.js

const app = express();
const http = require("http").Server(app);
const io = require("socket.io")(http);

io.on('connection', (socket) => {
console.log('Socket.io connected...');
socket.on('send', (data) => {
socket.emit('msgResult', data.msg);
});
socket.on('disconnect', () => {
console.log("A socket Discounted ..");
});
});

Я просто подключил свой msgResult из представления ajax.Вот и все.

0 голосов
/ 09 июня 2019

ваш index.js для сокет-сервера должен иметь // webServerPort = localhost: 3000

const server = http.createServer(app);
let constAppServer = server.listen(webServerPort);
let io = socketServer(constAppServer);
app.set('socket',io);
io.on('connection', function (socket) {
    console.log('connection opened');

    socket.on('disconnect', function(){
        console.log('user disconnected');
    });

    socket.on('udagent',function(msg){
        console.log('message: ' + msg);
    });
});

это ваш event.js, когда вы хотите отправить событиек интерфейсу

const testFunction =(req,res)=> {
    let io = req.app.get('socket');
    io.emit('dashboard_event', { "totalMin": data });
}
0 голосов
/ 09 июня 2019

У меня был API для рассылки уведомлений администратора всем агентам, находящимся под моим управлением, создав и передав этот API

const broadCastUpdates =(req,res)=> {
    const {message} = req.body
    let io = req.app.get('socket');
    io.broadcast.emit('broadCastToAgents', { 'data':message });
}
0 голосов
/ 08 июня 2019

Если вы хотите отправить сообщение на все подключенные сокеты, вы можете использовать

io.sockets.emit('msgResult', 'data');

и если вы хотите отправить сообщение на все подключенные сокеты, кроме отправителя, используйте

socket.broadcast.emit('msgResult', 'data');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...