nowjs - отказ в подключении клиента

у меня теперь вопрос:

как вы отказываетесь от клиентского подключения от обработчика событий для события подключения?

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

хорошо, так как stackoverflow почему-то считает, что мой вопрос ниже их стандарта качества, я попробую добавить пример кода...

everyone.on('connect', function(){
    if (!niceClient) {
        // do something to kick him out
    }
});

заранее спасибо!


person DasAntonym    schedule 17.06.2011    source источник
comment
Да, добавление примера кода (или нескольких) и, желательно, задокументированного примера кода, который показывает рабочий процесс, ВСЕГДА делает лучший вопрос. Я призываю вас конкретизировать вопрос даже немного больше. tinyurl.com/so-hints   -  person jcolebrand    schedule 17.06.2011
comment
да, вы абсолютно правы, но в данном случае пример кода показался мне просто до смешного очевидным. но я обещаю быть лучше в будущем, усвоил урок.   -  person DasAntonym    schedule 20.06.2011


Ответы (3)


Я не уверен в специфике nowjs, но с помощью простого node.js вы можете сделать что-то вроде этого:

var http = require('http')
http.createServer(function (req, res) {
  // ...
}).on('connection', function(sock) {
  if (!niceClient) {
    sock.end(); // Close the client connection.
  }
}).listen(8080, 'localhost');

Похоже, что nowjs просто обертывает HTTP-сервер узла, поэтому, предположительно, такой прослушиватель событий «соединения» будет работать и с этой библиотекой.

person maerics    schedule 17.06.2011
comment
на самом деле это может быть слишком низкий уровень для проверки соединения nowjs, поскольку материал nowjs идет после соединения сокета. но спасибо за подсказку, это дало мне несколько идей для дальнейшей проверки. - person DasAntonym; 20.06.2011

попробуй это

nowjs.on('connect', function(){
    nowjs.getClient(this.user.clientId, function(err){ 
        var address = this.socket.handshake.address;
        //@todo test if ip is blocked or banned
        console.log("New connection from " + address.address + ":" + address.port);

         //bla bla bla ....
           if (!niceClient) {
               this.socket.end(); // Close the client connection.
           }               
    });
});
person megainfo    schedule 03.01.2012

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

теперь я решу это следующим образом:

все соответствующие действия выполняются через группу (например, «niceusers»), и после успешной проверки пользователь помещается в эту группу. если нет успешной проверки, он остается в «подвешенном состоянии» и не получает никаких сообщений группы.

это решает мой случай, но этого может быть недостаточно для реального контроля доступа.

все еще надеюсь, что это может помочь кому-то!

person DasAntonym    schedule 20.06.2011