Генерация события Socket IO

Я пытаюсь заставить клиента разговаривать с сервером, но не могу получать события, отправляемые клиентом. Соединение устанавливается как серверная консоль. Регистрирует connected to localhost:61201 всякий раз, когда подключается клиент; но нет ответа от clientEvents, которые периодически генерируются клиентом.

server.js

const port = 61201;
const ipAddress = "127.0.0.1"

var http = require('http');
var io = require('socket.io');
var server = http.createServer();
server.listen(port, ipAddress);
var socket = io.listen(server);

socket.on('connect', () => {
    console.info('connected to localhost:61201');
    socket.on('clientEvent', function (data) {
        console.info('message from the client:', data);
        socket.emit('serverEvent', "thanks server! for sending '" + data + "'");
    });
});

client.js

const port = 61201;
const ipAddress = "127.0.0.1";
const url = 'http://' + ipAddress + ':' + port;

var io = require('socket.io-client');

var socket = io(url);

socket.on('connect', () => {
    socket.on('serverEvent', function (data) {
        console.info('new message from the server:', data);
    });
    setInterval(function () {
        socket.emit('clientEvent', Math.random());
        console.info('message sent from the client');
    }, 3000);
});

какую версию socket-io и socket.io-client вы используете?

Marcos Casagrande 21.07.2018 19:52

@MarcosCasagrande 1.7.4

0TTT0 21.07.2018 20:16
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
2
67
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам необходимо использовать объект socket, который возвращает событие connect. Попробуй это

socket.on('connect', (clientSocket) => {
    console.info('connected to localhost:61201');
    clientSocket.on('clientEvent', function (data) {
        console.info('message from the client:', data);
        clientSocket.emit('serverEvent', "thanks server! for sending '" + data + "'");
    });
});

событие должно быть socket.on("connection", (clientSocket) => { ... });

Variable 21.07.2018 21:49

@Jer Я думаю оба работают socket.io/docs/server-api/#event-connect

Barış Uşaklı 21.07.2018 23:17

Другие вопросы по теме