nowjs - отказ от клиентского подключения - PullRequest
1 голос
/ 17 июня 2011

У меня вопрос nowjs:

как вы отклоняете клиентское соединение от обработчика событий для события connect?

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

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

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

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

Ответы [ 3 ]

2 голосов
/ 04 января 2012

попробуйте

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.
           }               
    });
});
2 голосов
/ 17 июня 2011

Я не уверен насчет специфики 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-сервер узла, так что, предположительно, такого рода прослушиватель событий 'connection' будет работать и с этой библиотекой.

1 голос
/ 20 июня 2011

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

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

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

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

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

...