2013-11-07 3 views
0

Im пробуя узел и гнездо IO, и им пытаются соответствовать маршруты аналогичным образом узел делает это напримерNodejs Оправа ИО на регулярных выражений матча

app.get("controller/action/somevar", callback); 

однако, используя регулярное выражение в согласовании событий сокета, кажется, не работает. Есть ли способ сопоставления события регулярного выражения или, по крайней мере, соответствия шаблону «*»

Я пробовал это.

socket.on(/.+/gi, function (data) { 
socket.emit('set_time', { time: '13:32'}); 
}); 

Я хотел бы перехватить все события, происходящие от некоторых контроллеров или содержащие некоторые переменные.

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

ответ

1

Сокеты наследуются от EventEmitter, поэтому поддерживаются только регулярные имена (нет модных вещей, таких как подстановочные знаки или регулярные выражения).

somewhat related question обсуждает некоторые варианты для реализации Экспресс-подобный слой маршрутизации поверх socket.io, но the solution не капля в замене и требует клиент и сервер код переписывает.

Совсем другой подход, но, возможно, применимый в вашей ситуации, принимается модулем sockatron.

+0

Спасибо за ответ. Я потратил некоторое время на отслеживание источника сокета io, чтобы узнать, где функция socket.on унаследована и что она делает. Я проследил его до EventEmitter, как вы упомянули, и я начал писать нечто похожее на то, что находится в ссылке, которую вы опубликовали. Пройдите этот образец и, вероятно, отметьте этот ответ, как принято позже. –

+0

@RainerPlumer, если ваш код стоит поделиться, подумайте о том, чтобы сделать его пакетом NPM :) – robertklep

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