Arhn - архитектура программирования

Клиентская сторона получает опрос на socket.io

У меня есть следующий код на моем сервере

var socket  = require( 'socket.io' );
var express = require('express');
var app     = express();
var server  = require('http').createServer(app);
var io      = socket.listen( server );
var port    = process.env.PORT || 3000;

server.listen(port, function () {
  console.log('Server listening at port %d', port);
});


io.on('connection', function (socket) {

  socket.on( 'new_count_message', function( data ) {
    io.sockets.emit( 'new_count_message', { 
    	new_count_message: data.new_count_message

    });
  });

  socket.on( 'update_count_message', function( data ) {
    io.sockets.emit( 'update_count_message', {
    	update_count_message: data.update_count_message 
    });
  });

  socket.on( 'new_message', function( data ) {
    io.sockets.emit( 'new_message', {
    	name: data.name,
    	email: data.email,
    	subject: data.subject,
    	created_at: data.created_at,
    	id: data.id
    });
  });

  
});

Но вместо того, чтобы показывать в консоли «update_count_message», консоль записывает непрерывный поток опросов.

	
GET http://localhost/socket.io/?EIO=3&transport=polling&t=1448850081140-15
GET http://localhost/socket.io/?EIO=3&transport=polling&t=1448850080247-12
GET http://localhost/socket.io/?EIO=3&transport=polling&t=1448850080252-13
GET http://localhost/socket.io/?EIO=3&transport=polling&t=1448850081252-16
GET http://localhost/socket.io/?EIO=3&transport=polling&t=1448850081290-17
GET http://localhost/socket.io/?EIO=3&transport=polling&t=1448850081351-18
GET http://localhost/socket.io/?EIO=3&transport=polling&t=1448850081416-19
GET http://localhost/socket.io/?EIO=3&transport=polling&t=1448850081474-20
GET http://localhost/socket.io/?EIO=3&transport=polling&t=1448850081532-21
GET http://localhost/socket.io/?EIO=3&transport=polling&t=1448850081576-22
GET http://localhost/socket.io/?EIO=3&transport=polling&t=1448850081651-23

как я могу это решить? Я не хочу получать петлю в браузере.

30.11.2015

  • извините за мой английский, я из Бразилии. 30.11.2015

Ответы:


1

Браузер/сокет не подключается к NodeJS. NodeJS либо не запущен, либо вы пытаетесь подключиться не к тому порту — в вашем случае похоже, что он пытается подключиться к порту 80. Если у вас уже запущен Apache на порту 80, вы не можете запустить и NodeJS, и Apache на том же порту, если вы не настроили обратный прокси-сервер в своем httpd.conf.

Вы можете следовать инструкциям по отладке здесь, чтобы увидеть, какие еще описательные ошибки могут быть у SocketIO:

http://socket.io/docs/logging-and-debugging/

Вы также можете перейти по этому URL-адресу в браузере и посмотреть, к какой странице он пытается подключиться:

http://localhost/socket.io/

30.11.2015
  • при доступе к странице localhost:3000/socket.io отображается следующее: {code:0, сообщение: Транспорт неизвестен}. 30.11.2015
  • ПОЛУЧИТЬ localhost/socket.io/ ‹-- это говорит об этом подключается к порту 80, а не к порту 3000. Обратите внимание, что у него нет порта 3000. Возможно, вам потребуется указать порт 3000 в своем клиенте. 30.11.2015
  • Я вызываю скрипт следующим образом: ‹script src=localhost:3000/socket.io/socket .io.js type=text/javascript›‹/script› что-то не так? 30.11.2015
  • как выглядит ваш io.connect() на стороне клиента/браузера? Например, мой выглядит так: var socket = io.connect('http://localhost:3000') 30.11.2015
  • похоже, что ваш клиент подключается к http://localhost:80, а не к http://locahost:3000, поэтому он никогда не подключается к NodeJS и входит в бесконечный цикл. 30.11.2015
  • Откройте консоль отладки в Chrome, и она будет похожа на отказ в соединении. 30.11.2015
  • как вы вызываете io.connect() на стороне клиента? вы проходите в порт или что-нибудь? измените свой io.connect, чтобы он выглядел так - io.connect('http://localhost:3000') 30.11.2015
  • Clayton, спасибо, я вообще-то забыл поставить порт на стороне клиента. 30.11.2015
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..