Как подключиться к tcp серверу через node.js / socket.io с клиента? - PullRequest
0 голосов
/ 08 сентября 2011

Я настроил tcp-сервер, используя node.js / socket.io, но не могу понять, как подключиться к нему через клиентскую часть.Я пробовал код клиента из http://socket.io/#how-to-use, но он отправляет запрос http на tcp-сервер, и после установления соединения веб-страница не завершает загрузку, круг загрузки продолжает двигаться.Из других сокетов я могу сказать, что запрос http отправляет все заголовки на tcp-сервер, но я не думаю, что соединение установлено, поскольку веб-страница никогда не загружается полностью, и я не могу передать что-либо еще tcp-серверу.Как установить клиентскую часть веб-страницы для tcp-сервера?

Мой клиент:

<script type="text/javascript" src="http://localhost:82/socket.io/socket.io.js"></script>
<script>
var socket = io.connect('http://localhost:81');

socket.on('connect', function () {
    socket.send('hi');
});

socket.send('hi1');
socket.emit('hi2');
</script>

Мой сервер:

var app = require('net')
  , fs = require('fs')

var sockets_list = [];

var server = app.createServer(function (socket) {
  sockets_list.push(socket);
  socket.write("Echo server\r\n");

  socket.on('data', function(data) {
    console.log(data);
    for (var i = 0; i < sockets_list.length; i++) {
        sockets_list[i].write(data);
    }

  });

  socket.on('end', function() {
    var i = sockets_list.indexOf(socket);
    sockets_list.splice(i, 1);
  });

});

server.listen(81);

Само собой разумеется,«привет» сообщения никогда не достигают tcp-сервера.

Ответы [ 2 ]

1 голос
/ 08 сентября 2011

Полагаю, это проблема кросс-доменного запроса.Вы загружаете свою страницу с localhost: 82, но делаете запрос на localhost: 81.

0 голосов
/ 17 июня 2013

Немного опоздал на вечеринку, а также мой самый первый ответ на stackoverflow.

Я столкнулся с той же проблемой, когда впервые начал работать с socket.io.Проблема в коде на стороне сервера, вам не требуется модуль socket.io:

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

io.on('connection',function(socket){
    console.log('socket connected successfully');

    socket.on('data',function(data){
        console.log('data',data);
    });
}

Затем, когда сервер запущен и работает, вы запрашиваете скрипт 'socket.io/socket.io.js 'из него:

<script type="text/javascript" src="http://localhost:81/socket.io/socket.io.js">

Я не верю, что вы можете смешивать / сопоставлять базовый модуль net' nodejs с клиентскими библиотеками socket.io.

Надеюсь, это поможет.

...