socket.io
запускает определенный протокол поверх протокола webSocket
, который затем запускается на обычном сокете TCP. Если вы пытаетесь подключиться к обычным сокетам Unix, вы не можете использовать socket.io
.
Вы можете использовать net.Socket
, описанный здесь: http://nodejs.org/api/net.html, который согласно этому документу является «абстракцией сокета TCP или UNIX».
Сокет socket.io имеет очень специфический протокол запуска, который он использует, и очень конкретный формат данных проводов, а также очень специфическую последовательность сообщений и стратегию сохранения тепла. Оба конца должны поддерживать все, что для подключения socket.io к работе.
Простой сокет - это корневой транспорт на самом низком уровне, но все эти другие вещи должны существовать поверх этого простого гнезда, чтобы обе стороны могли разговаривать друг с другом с помощью socket.io. См. this article, если вы хотите получить краткий обзор того, что связано с написанием сервера webSocket. Socket.io - это еще один протокол поверх транспорта webSocket.
Все еще очень смущает здесь. Я понятия не имею, почему вы упомянули стандартный сокет Unix.
Если вы пытаетесь подключиться с одного сервера nodejs к другому серверу nodejs, используя socket.io, и на одном из серверов работает сервер socket.io по умолчанию, который вы указали в своих комментариях, тогда вы сможете это сделать это от другой, чтобы подключиться к серверу Socket.io:
var socket = require('socket.io-client')('http://port.io');
socket.on('connect', function(){});
socket.on('event', function(data){});
socket.on('disconnect', function(){});
Это предполагает, что port.io
является областью вашего Socket.io сервера (то, что может быть решено с DNS, чтобы указать на действительный сервер). Важно, чтобы вы использовали фактический URL-адрес HTTP, потому что все соединения webSocket и socket.io инициируются с HTTP-запросом на фактический URL-адрес HTTP.
Я не понимаю, что вы пытаетесь сделать с помощью схем URL Unix.
Почему сокет. io заботится о прототипе самого низкого уровня l? –
Я понимаю, что я могу подключиться с помощью net.Socket, но почему, если мне нужна модель событий socket.io? –
@eicto - У вас должно быть что-то, что говорит socket.io на BOTH, чтобы связь работала правильно. Простой Unix-сокет сам по себе не знает, как инициировать соединение socket.io (которое начинается как HTTP-запрос, а затем обновляется до webSocket) или умеет говорить о событиях socket.io. Вы можете получить код, чтобы перейти на сервер Unix, который будет говорить на socket.io, и слушал порт, который вы собираетесь подключить, а затем вы можете его использовать. – jfriend00