Socket io не выдает предупреждение на сервере - PullRequest
0 голосов
/ 19 июня 2019

У меня есть простой экспресс JS, состоящий из двух маршрутов. Один для получения HTML-страницы и один для отправки сообщения веб-сокета

var express = require('express');
var router = express.Router();
var mysql = require('mysql');

var app = express();


var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'root',
  password : '123456'
});


router.get('/', function(req, res){
res.sendFile('/express/one/index.html');
});


router.get('/get_me', function(req, res){
   res.send('GET route on things.');

   io.on('connection', function (socket) {
     socket.emit('trial',Math.random());
  });


var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'root',
  password : '123456'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err.stack);
    return;
  }
  console.log('connected as id ' + connection.threadId);
});

});

router.post('/post_me/:one/:two', function(req, res){
   res.send('POST route on things.' + req.params.one + req.params.two +'.');
});



router.get('/hello/:name', function(req, res) {
    res.send('hello ' + req.params.name + '!');
});

router.get('/hello/:first/:second/:third', function(req, res) {
    res.send('hello ' + req.params.first + req.params.second + req.params.third + '!');
});

app.use('/', router);
var server = app.listen(3000);
var io = require('socket.io').listen(server);

На стороне клиента у меня есть

   var socket = io('http://localhost:3000');
     socket.on('trial', function (data) {
    alert(data);
  });

Я ожидаю получить случайное число на стороне клиента без обновления при выполнении get_me

Это не тот случай. Я получаю случайное число только при выполнении get_me и обновлении страницы index.html.

Так должен работать сокет io (чтобы обновить html-страницу через заданный интервал для получения сообщений)?.

Я из протокола протокола Stomp, но это не так.

1 Ответ

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

Проблема в том, что вы инициализируете свой сокет только после того, как достигнут маршрут '/get_me'.

Решение: просто поместите io.on('connection' .... ) вне маршрута, просто в корень приложения, чтобы сокет инициализировался при запуске, а не после достижения маршрута.

...