Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[bug] SocketIONamespace missed method getRoomOperations #162

Open
dgolovin-dev opened this issue Sep 26, 2014 · 15 comments
Open

[bug] SocketIONamespace missed method getRoomOperations #162

dgolovin-dev opened this issue Sep 26, 2014 · 15 comments

Comments

@dgolovin-dev
Copy link

in spec http://socket.io/docs/rooms-and-namespaces/

Within each namespace, you can also define arbitrary channels that sockets can join and leave.
@dgolovin-dev dgolovin-dev changed the title SocketIONamespace missed methods joinRoom, leaveRoom, getBroadcastOperations Sep 26, 2014
@dgolovin-dev dgolovin-dev changed the title SocketIONamespace missed methods joinRoom, leaveRoom, getRoomOperations Sep 26, 2014
@dgolovin-dev dgolovin-dev changed the title [bug] SocketIONamespace missed methods joinRoom, leaveRoom, getRoomOperations Sep 26, 2014
@dgolovin-dev
Copy link
Author

и ещё, я не уверен, что SocketIOServer.getRoomOperations работает корректно

@dgolovin-dev
Copy link
Author

Если смотреть на ориги��альный socket.io-server, то:

https://github.com/Automattic/socket.io/blob/master/lib/index.js#L50
this.sockets = this.of('/');

https://github.com/Automattic/socket.io/blob/master/lib/index.js#L361
['on', 'to', 'in', 'use', 'emit', 'send', 'write'].forEach(function(fn){
Server.prototype[fn] = function(){
var nsp = this.sockets[fn];
return nsp.apply(this.sockets, arguments);
};
});

@mrniko
Copy link
Owner

mrniko commented Sep 26, 2014

в чем проблема?

@dgolovin-dev
Copy link
Author

Значит, что отправка в комнату сообщения из сервера должна работать также как из namespace '/', а сейчас, как я вижу по коду собираются комнаты по всем namespace

@dgolovin-dev
Copy link
Author

проблема в использовании NamespacesHub.getRoomClients в SocketIOServer.getRoomOperations

@mrniko
Copy link
Owner

mrniko commented Sep 26, 2014

в Namespace.roomClients только клиенты от этого namespace

@mrniko
Copy link
Owner

mrniko commented Sep 26, 2014

получается, что Namespace.getRoomClients работает верно

@dgolovin-dev
Copy link
Author

Да, Namespace.getRoomClients работает верно, но в SocketIOServer вот что:

SocketIOServer:

public BroadcastOperations getRoomOperations(String room) {
    Iterable<SocketIOClient> clients = namespacesHub.getRoomClients(room);
    return new BroadcastOperations(clients, configCopy.getStoreFactory());
}

NamespaceHub:

public BroadcastOperations getRoomOperations(String room) {
    Iterable<SocketIOClient> clients = namespacesHub.getRoomClients(room);
    return new BroadcastOperations(clients, configCopy.getStoreFactory());
}
@mrniko
Copy link
Owner

mrniko commented Sep 26, 2014

т.е. ты предлагаешь пределать чтобы SocketIOServer.getRoomOperations работал только с default namespace-ом?

@dgolovin-dev
Copy link
Author

Да, оригинальный сервер работает именно так.

@mrniko
Copy link
Owner

mrniko commented Sep 26, 2014

а как по всем namespace-ам рассылать тогда?

@dgolovin-dev
Copy link
Author

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

@pablojr
Copy link

pablojr commented Sep 26, 2014

Guys, for the rest of the mortals would you consider please posting in English. If not, may I ask you to exchange private e-mails? Thank you very much

@dgolovin-dev
Copy link
Author

Russian is international language... ok. Problem in "SocketIOServer.getRoomOperations". Current implementation allows to sent message in target rooms of all namespaces. But in original js socket.io "Server.in" allows to sent message in room of '/' namespace. I think this is bug.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
3 participants