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
Send message with all client not work #87
Comments
Which version of netty-socketio do you use? total clients amount connected to server? |
Please try to reproduce it with latest version from master |
Only 2 client i test in local i reproduce problem. |
Same problem from master 2013-12-13 09:23:31,142 | ERROR | entLoopGroup-3-2 | PacketHandler | o.socketio.handler.PacketHandler 82 | 300 - netty-socketio - 1.5.5-SNAPSHOT | Exception occurs
java.lang.IllegalArgumentException: promise.channel does not match: [id: 0x32a3fea1, /127.0.0.1:42881 => /127.0.0.1:8283] (expected: [id: 0x3072497c, /127.0.0.1:42842 => /127.0.0.1:8283])
at io.netty.channel.DefaultChannelHandlerContext.validatePromise(DefaultChannelHandlerContext.java:802)[283:io.netty.transport:4.0.12.Final]
at io.netty.channel.DefaultChannelHandlerContext.write(DefaultChannelHandlerContext.java:636)[283:io.netty.transport:4.0.12.Final]
at io.netty.handler.stream.ChunkedWriteHandler.doFlush(ChunkedWriteHandler.java:306)[285:io.netty.handler:4.0.12.Final]
at io.netty.handler.stream.ChunkedWriteHandler.flush(ChunkedWriteHandler.java:141)[285:io.netty.handler:4.0.12.Final]
at io.netty.channel.DefaultChannelHandlerContext.invokeFlush(DefaultChannelHandlerContext.java:675)[283:io.netty.transport:4.0.12.Final]
at io.netty.channel.DefaultChannelHandlerContext.flush(DefaultChannelHandlerContext.java:656)[283:io.netty.transport:4.0.12.Final]
at io.netty.channel.ChannelOutboundHandlerAdapter.flush(ChannelOutboundHandlerAdapter.java:115)[283:io.netty.transport:4.0.12.Final]
at io.netty.channel.DefaultChannelHandlerContext.invokeFlush(DefaultChannelHandlerContext.java:675)[283:io.netty.transport:4.0.12.Final]
at io.netty.channel.DefaultChannelHandlerContext.write(DefaultChannelHandlerContext.java:701)[283:io.netty.transport:4.0.12.Final]
at io.netty.channel.DefaultChannelHandlerContext.writeAndFlush(DefaultChannelHandlerContext.java:689)[283:io.netty.transport:4.0.12.Final]
at io.netty.channel.DefaultChannelHandlerContext.writeAndFlush(DefaultChannelHandlerContext.java:718)[283:io.netty.transport:4.0.12.Final]
at io.netty.channel.DefaultChannelPipeline.writeAndFlush(DefaultChannelPipeline.java:893)[283:io.netty.transport:4.0.12.Final]
at io.netty.channel.AbstractChannel.writeAndFlush(AbstractChannel.java:240)[283:io.netty.transport:4.0.12.Final]
at com.corundumstudio.socketio.handler.EncoderHandler.handle(EncoderHandler.java:166)[300:netty-socketio:1.5.5]
at com.corundumstudio.socketio.handler.EncoderHandler.write(EncoderHandler.java:144)[300:netty-socketio:1.5.5]
at io.netty.channel.DefaultChannelHandlerContext.invokeWrite(DefaultChannelHandlerContext.java:645)[283:io.netty.transport:4.0.12.Final]
at io.netty.channel.DefaultChannelHandlerContext.access$2000(DefaultChannelHandlerContext.java:29)[283:io.netty.transport:4.0.12.Final]
at io.netty.channel.DefaultChannelHandlerContext$WriteTask.run(DefaultChannelHandlerContext.java:906)[283:io.netty.transport:4.0.12.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:354)[282:io.netty.common:4.0.12.Final]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:353)[283:io.netty.transport:4.0.12.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:101)[282:io.netty.common:4.0.12.Final]
at java.lang.Thread.run(Thread.java:744)[:1.7.0_45]
|
I understand the problem but i don't know how to resolve? Nevertheless, for example the channel for clientA can receipt response promise Client B, and validation netty not work and throw Exception. |
@timactive how do you create a "promise" object? could you send a code example of this? |
Reproduce in standalone public static void main(String args[])
{
Configuration config = new Configuration();
config.setHostname("127.0.0.1");
config.setPort(8284);
SocketIOServer server = new SocketIOServer(config);
SocketIONamespace namespace = server.addNamespace("/rapport");
namespace.addDisconnectListener(new DisconnectListener() {
@Override
public void onDisconnect(SocketIOClient client) {
System.out.println("is disconnected "+client.getSessionId());
}
});
namespace.addConnectListener(new ConnectListener() {
@Override
public void onConnect(SocketIOClient client) {
System.out.println("is connected "+client.getSessionId());
}
});
namespace.addMessageListener(new DataListener<String>() {
@Override
public void onData(SocketIOClient client, String data,
AckRequest ackSender) {
// TODO Auto-generated method stub
}
});
server.start();
int nbmessage=0;
while(true && nbmessage < 250000)
{
server.getBroadcastOperations().sendMessage("itsservertestbug " + nbmessage);
nbmessage++;
try {
Thread.sleep(100);/*simule a work*/
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
server.stop();
} ```
In Client
```java
var rapportSocket2 = io.connect('http://localhost:8284/rapport');
function connectHandler() {
return function() {
console.log('Client has connected to the server!');
rapportSocket.send("coucou je suis "+" romain");
}
}
rapportSocket2.on('connect', function(){
console.log(' rapportSocket2 Client has connected to the server!');
});
rapportSocket2.on('message', function(data) {
console.log(data);
});
rapportSocket2.on('disconnect', function() {
console.log(' rapportSocket2 Client has connected to the server!');
}); ``` |
I test and it work now!! |
Thanks for bug report! |
For example i test this
But i have big problem in production server, i test with 2 client (Firefox and Chrome in a same host).
Then after this error i have ~ 100 line error such as
When i add a sleep after each send it work fine.
The solution is pretty bad, the problem is aillor.
The text was updated successfully, but these errors were encountered: