2012-03-06 1 views
0

Проблема на стороне сокета socket.io.Socket IO опубликовать-подписать модель сложно

Я хочу сначала создать несвязанный сокет и подключить его к серверу после назначения всех слушателей. Слушатели не могут быть установлены синхронно в одном месте в моем приложении, потому что есть некоторые зависимости.

Я знаю, что это нормально нормальное поведение для node.js! Просто посмотрите на сокеты nodejs! Надеюсь, в моей архитектуре нет ничего плохого. Оправа ИО не хватает documentation и я не могу найти, как сделать то, что я хочу:

var socket = new io.Socket(); //creating empty socket.But this line does not work 

//..... socket variable can be passed somewhere ..... 
//..... to another place in app ..... 

socket.on('message', callback); 

//..... when everyone is ready and subscriben ..... 

socket.connect('some-url'); 
+0

'var socket = new io.Socket(); // это не работает. – Dan

ответ

1

Итак, вы хотите, чтобы начать socket.connect() когда что-то происходит? Таким образом, классический click слушатель события, как это:

$('#button').click(function() { 
    socket.connect('some-url') 
}); 

Если вы хотите прослушивать сообщения только после того, как происходит событие, выполните следующие действия:

socket.connect('some-url') 
document.getElementById('button').onclick = function() { 
    socket.on('message', function() { 
     // Your stuff 
    } 
} 
+0

Одно небольшое примечание: этот «готовый» происходит на стороне клиента. Решение может быть еще более простым. – Dan

+0

Ну, вам нужно общаться с другими клиентами, чтобы знать, когда вы будете готовы. К сожалению, единственный способ сделать это - поговорить с сервером, который подключен ко всем другим клиентам. Поэтому только сервер может сказать вам, когда вы будете готовы, и можете отправить вам такое событие. –

+0

Не могли бы вы дать код создания экземпляра 'socket', и все было бы здорово! – Dan

1

Если я правильно понял ваш вопрос правильно, если вы создаете сокет без подключения сразу, все прослушиватели событий, которые вы добавили к нему, не учитываются после его подключения. Это было бы дерьмо, я еще не играл с сокетами, поэтому я не могу проверить, верно это или нет, но у меня есть решение проблемы.

Создайте фасад, который вы добавите всем своим слушателям, abale для подключения к серверу, подключения, добавления слушателей (это должно выполняться синхронно) и прокси-сервера всех событий, отправленных сокетом через ваш фасад.

+0

Сокет нельзя создать без подключения. Попробуй сам! – Dan

+0

Да, создание фасада - хорошая идея. Это последнее спасение – Dan

0

Я нашел то, что искал в socket.io documentatuion

Они пишут, мы можем отключить подключение к серверу в момент строительства гнезда, установив этот конфиг:

автоматического подключения по умолчанию true

Когда вы вызываете io.connect(), если Socket.IO автоматически установит соединение с сервером.

Итак, теперь мы строим объект и не создаем соединение немедленно.

После построения бессеансового сокета вызова метод create()

Я до сих пор не знаю, как отключить соединение. Поэтому следите за обновлениями

 Смежные вопросы

  • Нет связанных вопросов^_^