проверка на стороне сервера с помощью socket.io - PullRequest
4 голосов
/ 20 марта 2012

Я просто хочу проверить некоторые данные с помощью nodejs & socket.io на стороне сервера.

Поэтому я отправляю данные с помощью socket.emit('validate data', data)

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

socket.emit('validated data', boolean })

.. и получить этот ответ на стороне клиента обратно, как это ...

socket.on('validated data', function (boolean) {
    validationResponse = boolean;
});

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

Есть ли лучшее решение для получения прямого ответа от логических значений или крошечной информации?

Ответы [ 3 ]

0 голосов
/ 20 марта 2012

Я думаю, нет, на самом деле не существует лучшего (то есть более сомнительного) решения в целом.Я лично думаю, что ваш код является довольно коротким.Если вам нужен более короткий код, моя единственная рекомендация - использовать более короткие имена идентификаторов.

Если код вашего сервера выполняет только один тип операций, вы можете исключить свои события и просто использовать socket.send(data) с socket.on("message", fn) вместоsocket.emit.

0 голосов
/ 21 марта 2012

Мой вопрос касался более короткого или более безопасного кода, но как я подозревал:

Я думаю, что это очень общий вопрос о взаимодействии сервера с клиентом

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

Так что, в конце концов, я предпочитаю проверить это в любом случае,но если пользователь отправит сообщение с неверным / занятым именем пользователя, оно не будет отправлено другим клиентам, и сам клиент получит сообщение типа username already taken.

buddys, извините, и спасибо за ваши ответы.отдельное спасибо @ ThiefMaster

0 голосов
/ 20 марта 2012

Как насчет регулярного выражения для проверки ваших входных данных?Вы можете хранить эти регулярные выражения в атрибуте каждого элемента и применять их к классу входных данных.Запустите эти проверки правильности для таких событий, как change или blur, и все готово ...

<input type="text" regex="(a|b)" />

<input type="text" class="regex typeA" />

jQuery и другие библиотеки JavaScript имеют хорошие плагины проверки формы, но вы также можете создать их самостоятельно:

$('.regex').each(function(el) {
  if ($(el).hasClass('typeA')) {
    // doValidation
  }
});

Если вам нужно использовать свой сервер для проверки пользовательского ввода, нет никакого способа использовать запросы WebSockets или AJAX для проверки.Конечно, WebSockets генерирует меньше трафика данных ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...