Giter VIP home page Giter VIP logo

socket.io-server-java's People

Contributors

dependabot[bot] avatar oddmario avatar trinopoty avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

socket.io-server-java's Issues

acknowledgementCallback,I con't received callback

my client is "socket.io-client": "^4.4.1" and my server is java socket.io-server:3.0.2.
why I con't received callback ? client received message form server.

public void send(String event, Object[] args, ReceivedByRemoteAcknowledgementCallback acknowledgementCallback)

about version 4.0.1

Hello, I am very glad to see the Java version of the server, may I ask what version of Socket.IO corresponds to 4.0.1 version, and what version should I use Socket. io-client? Thank you

Middleware Support

Thanks for the port. I don't think this supports adding middlewares. Is that correct or I missed it somewhere?

ping timeout

How do I change the default value of the ping timeout for the heartbeat mechanism?

No packages sent after briefly going offline when using long polling

When setting Chrome to offline, the long polling connection in the browser is disconnected as expected. When setting Chrome back to "no throttling", the long polling connection is re-established.

However, SocketIoClient.sendPacket no longer sends any messages because the first check fails

        if (mConnection.getReadyState() == ReadyState.OPEN) {

In this situation, mConnection.getReadyState() remains ReadyState.CLOSED

Deadlock SocketIoSocket.leaveAllRooms vs SocketIoMemoryAdapter.remove

I have a chat system with the back end built on socket.io-server-java. When a client disconnects, the system broadcasts a message to the room that the client was in.

This is working very nicely, thank you, except that when multiple clients leave at almost exactly the same time I hit a deadlock. The stack trace below demonstrates this.

The first thread is processing closing a connection. It holds the lock to the SocketIoSocket being closed (0x00000007b37007a8) and as part of running SocketIoSocket leaveAllRooms it is waiting on acquiring the lock to the SocketIoMemoryAdapter (0x00000007b3901978) to run its remove method.

The second thread is processing closing a connection - I assume from a different client. As part of that, on "disconnect" I have a listener registered that broadcasts a message to a room. This thread holds the lock to the SocketIoMemoryAdapter (0x00000007b3901978) because it is in the SocketIoMemoryAdapter broadcast method. Somehow that broadcast is throwing an IOException - I suspect trying to broadcast to the socket that the first thread is in the middle of closing. As part of processing that exception, it is attempting to close the problematic socket, which includes running SocketIoSocket method leaveAllRooms, and in doing so its trying to acquire the lock on that SocketIoSocket (0x00000007b37007a8). Hence the deadlock.

Is this a known limitation, or is it something you could look at fixing please? Is there any workaround?

I'm running version 4.0.1 in a a web app deployed as an EAR file in WildFly 26.1.1.

"default task-572" #2020 prio=5 os_prio=0 cpu=15.63ms elapsed=6490.38s allocated=14200B defined_classes=0 tid=0x00000203fa9c7000 nid=0x4608 waiting for monitor entry  [0x00000036229fe000]
   java.lang.Thread.State: BLOCKED (on object monitor)
	at io.socket.socketio.server.SocketIoMemoryAdapter.remove(SocketIoMemoryAdapter.java:92)
	- waiting to lock <0x00000007b3901978> (a io.socket.socketio.server.SocketIoMemoryAdapter)
	at io.socket.socketio.server.SocketIoSocket.leaveAllRooms(SocketIoSocket.java:268)
	- locked <0x00000007b37007a8> (a io.socket.socketio.server.SocketIoSocket)
	at io.socket.socketio.server.SocketIoSocket.onClose(SocketIoSocket.java:364)
	at io.socket.socketio.server.SocketIoSocket.onDisconnect(SocketIoSocket.java:357)
	at io.socket.socketio.server.SocketIoSocket.onPacket(SocketIoSocket.java:336)
	at io.socket.socketio.server.SocketIoClient.lambda$setup$1(SocketIoClient.java:163)
	at io.socket.socketio.server.SocketIoClient$$Lambda$3548/0x0000000803770440.call(Unknown Source)
	at io.socket.socketio.server.parser.IOParser$Decoder.add(IOParser.java:99)
	at io.socket.socketio.server.SocketIoClient.lambda$setup$2(SocketIoClient.java:171)
	at io.socket.socketio.server.SocketIoClient$$Lambda$3549/0x0000000803770840.call(Unknown Source)
	at io.socket.engineio.server.Emitter.emit(Emitter.java:123)
	at io.socket.engineio.server.EngineIoSocket.emit(EngineIoSocket.java:187)
	at io.socket.engineio.server.EngineIoSocket.onPacket(EngineIoSocket.java:400)
	at io.socket.engineio.server.EngineIoSocket.lambda$setTransport$10(EngineIoSocket.java:303)
	at io.socket.engineio.server.EngineIoSocket$$Lambda$3542/0x0000000803732440.call(Unknown Source)
	at io.socket.engineio.server.Emitter.emit(Emitter.java:123)
	at io.socket.engineio.server.Transport.onPacket(Transport.java:102)
	at io.socket.engineio.server.Transport.onData(Transport.java:111)
	at io.socket.engineio.server.transport.WebSocket.lambda$new$0(WebSocket.java:26)
	at io.socket.engineio.server.transport.WebSocket$$Lambda$3556/0x0000000803772440.call(Unknown Source)
	at io.socket.engineio.server.Emitter.emit(Emitter.java:123)
[...my @OnMessage method in my @ServerEndpoint class]
"default task-558" #2006 prio=5 os_prio=0 cpu=15.63ms elapsed=6490.39s allocated=60368B defined_classes=0 tid=0x00000203f3b80000 nid=0x52a4 waiting for monitor entry  [0x00000036219fc000]
   java.lang.Thread.State: BLOCKED (on object monitor)
	at io.socket.socketio.server.SocketIoSocket.leaveAllRooms(SocketIoSocket.java:267)
	- waiting to lock <0x00000007b37007a8> (a io.socket.socketio.server.SocketIoSocket)
	at io.socket.socketio.server.SocketIoSocket.onClose(SocketIoSocket.java:364)
	at io.socket.socketio.server.SocketIoClient.onClose(SocketIoClient.java:206)
	at io.socket.socketio.server.SocketIoClient.lambda$setup$4(SocketIoClient.java:180)
	at io.socket.socketio.server.SocketIoClient$$Lambda$3551/0x0000000803771040.call(Unknown Source)
	at io.socket.engineio.server.Emitter.emit(Emitter.java:123)
	at io.socket.engineio.server.EngineIoSocket.emit(EngineIoSocket.java:187)
	at io.socket.engineio.server.EngineIoSocket.onClose(EngineIoSocket.java:369)
	at io.socket.engineio.server.EngineIoSocket.onError(EngineIoSocket.java:374)
	at io.socket.engineio.server.EngineIoSocket.lambda$setTransport$8(EngineIoSocket.java:298)
	at io.socket.engineio.server.EngineIoSocket$$Lambda$3540/0x0000000803732c40.call(Unknown Source)
	at io.socket.engineio.server.Emitter$OnceListener.call(Emitter.java:37)
	at io.socket.engineio.server.Emitter.emit(Emitter.java:123)
	at io.socket.engineio.server.Transport.onError(Transport.java:92)
	at io.socket.engineio.server.transport.WebSocket.lambda$send$3(WebSocket.java:54)
	at io.socket.engineio.server.transport.WebSocket$$Lambda$3564/0x0000000803774440.call(Unknown Source)
	at io.socket.engineio.server.parser.ParserV4.encodePacket(ParserV4.java:36)
	at io.socket.engineio.server.transport.WebSocket.send(WebSocket.java:58)
	at io.socket.engineio.server.EngineIoSocket.flush(EngineIoSocket.java:422)
	- locked <0x00000007b3700bf8> (a java.lang.Object)
	at io.socket.engineio.server.EngineIoSocket.sendPacket(EngineIoSocket.java:412)
	- locked <0x00000007b3700bf8> (a java.lang.Object)
	at io.socket.engineio.server.EngineIoSocket.send(EngineIoSocket.java:114)
	at io.socket.socketio.server.SocketIoClient.lambda$sendPacket$0(SocketIoClient.java:74)
	at io.socket.socketio.server.SocketIoClient$$Lambda$3554/0x0000000803771c40.call(Unknown Source)
	at io.socket.socketio.server.parser.IOParser$Encoder.encode(IOParser.java:37)
	at io.socket.socketio.server.SocketIoClient.sendPacket(SocketIoClient.java:68)
	at io.socket.socketio.server.SocketIoSocket.sendPacket(SocketIoSocket.java:382)
	at io.socket.socketio.server.SocketIoMemoryAdapter.broadcast(SocketIoMemoryAdapter.java:52)
	- locked <0x00000007b3901978> (a io.socket.socketio.server.SocketIoMemoryAdapter)
	at io.socket.socketio.server.SocketIoAdapter.broadcast(SocketIoAdapter.java:59)
	at io.socket.socketio.server.SocketIoNamespaceImpl.broadcast(SocketIoNamespaceImpl.java:32)
	at io.socket.socketio.server.SocketIoNamespace.broadcast(SocketIoNamespace.java:60)
[...my code that responds to a client disconnecting and broadcasts a message to the room...]
	at io.socket.engineio.server.Emitter.emit(Emitter.java:123)
	at io.socket.socketio.server.SocketIoSocket.onClose(SocketIoSocket.java:370)
	at io.socket.socketio.server.SocketIoSocket.onDisconnect(SocketIoSocket.java:357)
	at io.socket.socketio.server.SocketIoSocket.onPacket(SocketIoSocket.java:336)
	at io.socket.socketio.server.SocketIoClient.lambda$setup$1(SocketIoClient.java:163)
	at io.socket.socketio.server.SocketIoClient$$Lambda$3548/0x0000000803770440.call(Unknown Source)
	at io.socket.socketio.server.parser.IOParser$Decoder.add(IOParser.java:99)
	at io.socket.socketio.server.SocketIoClient.lambda$setup$2(SocketIoClient.java:171)
	at io.socket.socketio.server.SocketIoClient$$Lambda$3549/0x0000000803770840.call(Unknown Source)
	at io.socket.engineio.server.Emitter.emit(Emitter.java:123)
	at io.socket.engineio.server.EngineIoSocket.emit(EngineIoSocket.java:187)
	at io.socket.engineio.server.EngineIoSocket.onPacket(EngineIoSocket.java:400)
	at io.socket.engineio.server.EngineIoSocket.lambda$setTransport$10(EngineIoSocket.java:303)
	at io.socket.engineio.server.EngineIoSocket$$Lambda$3542/0x0000000803732440.call(Unknown Source)
	at io.socket.engineio.server.Emitter.emit(Emitter.java:123)
	at io.socket.engineio.server.Transport.onPacket(Transport.java:102)
	at io.socket.engineio.server.Transport.onData(Transport.java:111)
	at io.socket.engineio.server.transport.WebSocket.lambda$new$0(WebSocket.java:26)
	at io.socket.engineio.server.transport.WebSocket$$Lambda$3556/0x0000000803772440.call(Unknown Source)
	at io.socket.engineio.server.Emitter.emit(Emitter.java:123)
[...my @OnMessage method in my @ServerEndpoint class]

Missing onAny() function

Hello,

after seeing that Socket.io offers its own implementation of the Socket.io server in Java, I wanted to migrate the node.js server implementation to Java.
In our use case, we do not work with individual events, but pass the events to the BE and this is where the separation is made, for this reason we currently use the onAny() method of the Javascript library, which is not yet implemented in Java.
Is an implementation of the onAny() function for the server planned for the future?

文档

没人用啊,也没有文档,没示例代码

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.