Подтвердить что ты не робот

Ссылка на соединение Socket.io?

У меня есть текущая настройка:

  • Прокси-сервер Nodejs (работает с http-обратным прокси), работающий на порту 80.
  • Сервер Rails, работающий на сервере 3000
  • Веб-сервер Nodejs, работающий на порту 8888

Таким образом, любой запрос, начинающийся с /nodejs/, будет перенаправлен на веб-сервер nodejs на 8888.

Все остальное будет перенаправлено на сервер rails на порт 3000.

В настоящее время для Socket.io требуется URL-адрес соединения для io.connect.

Обратите внимание, что /nodejs/socket.io/socket.io.js является допустимым и возвращает нужную библиотеку jQuery.


Однако я не могу указать connection_url на/nodejs/на моем сервере.

Я пробовал http://myapp.com/nodejs и другие варианты, но я все еще получаю ошибку 404 со следующим URL http://myapp/socket.io/1/?t=1331851089106

Можно ли сообщить io.connect префикс каждого URL-адреса соединения с/nodejs/?

4b9b3361

Ответ 1

Как и в версии Socket.io версии 1, ресурс был заменен на путь. Использование:

var socket = io('http://localhost', {path: '/nodejs/socket.io'});

Смотрите: http://blog.seafuj.com/migrating-to-socketio-1-0

Ответ 2

вы можете указать ресурс следующим образом:

var socket = io.connect('http://localhost', {resource: 'nodejs'});

по умолчанию resource = "socket.io"

Ответ 3

Я использую ниже подход для достижения этой цели:

клиентская сторона:

var socket = io.connect('http://localhost:8183/?clientId='+clientId,{"force new connection":true});

сторона сервера:

var io = require('socket.io').listen(server);
io.sockets.on('connection', function(socket) {
    console.log("url"+socket.handshake.url);
    clientId=socket.handshake.query.clientId;
    console.log("connected clientId:"+clientId);

});

ссылка: https://github.com/LearnBoost/socket.io/wiki/Authorizing#global-authorization

Ответ 4

Если вы используете express с nodejs:

Серверная сторона:

var io = require('socket.io')(server, {path: '/octagon/socket.io'});

затем

io.on('connection', function(socket) {
        console.log('a user connected, id ' + socket.id);
        socket.on('disconnect', function() {
            console.log('a user disconnected, id '  + socket.id);
        })
})
socket.on('publish message ' + clientId, function(msg) {
        console.log('got message')
    })

Клиентская сторона:

var socket = io('https://dev.octagon.com:8443', {path: '/octagon/socket.io'})

затем

socket.emit('publish message ' + clientId, msg)