Comments (5)
My websocket server just working, but after client send always close as soon as after receive message, even if i have change code to
@Provides
AsyncServlet servlet() {
return RoutingServlet.create()
.mapWebSocket("/", (webSocket) -> webSocket.readMessage()
.whenResult((message) -> System.out.println("Received:" + message.getText()))
.then(() -> webSocket.writeMessage(WebSocket.Message.text("Halo Bosss"))));
from activej.
Hello, @azzahrah
Did you manage to run an example?
Actually, server should not be closed after serving a request from the client. In Ping - Pong example it is client the one who shuts down after sending a request and receiving a response. Server should be listening for connections until explicit shutdown.
from activej.
@eduard-vasinskyi,
yes, i have run an example, and working fine, below is my modified example that working for me:
public final class WebSocketPongServerExample extends HttpServerLauncher {
//[START EXAMPLE]
@Provides
AsyncServlet servlet() {
return RoutingServlet.create()
.mapWebSocket("/websocket", webSocket -> readMessage(webSocket))
.mapWebSocket("/", webSocket -> readMessage(webSocket));
}
//[END EXAMPLE]
void readMessage(WebSocket websocket) {
websocket.readMessage()
.whenResult(message -> System.out.println("Received:" + message.getText()))
.whenComplete(() -> {
if (!websocket.isClosed()) {
readMessage(websocket);
} else {
websocket.close();
}
});
}
public static void main(String[] args) throws Exception {
WebSocketPongServerExample launcher = new WebSocketPongServerExample();
launcher.launch(args);
}
}
the above example force application to re read again after receive data, i don't know is this right way to wait incoming and read data...
from activej.
This is one way to create a WebSocket that reads data infinitely.
Although, you should not close a WebSocket that has already been closed, as it will do nothing. And you should check for message type (TEXT
or BINARY
) before calling message.getText()
(unless you are sure that the client will only send TEXT
WebSocket frames).
You can use our CSP (Communicating sequential process) API to rewrite readMessage()
to make it more concise:
void readMessage(WebSocket websocket) {
websocket.messageReadChannel()
// .filter(message -> message.getType() == MessageType.TEXT)
.map(Message::getText)
.streamTo(ChannelConsumer.ofConsumer(text -> System.out.println("Received:" + text)));
}
from activej.
@eduard-vasinskyi thanks for your help... you are really save my time
from activej.
Related Issues (20)
- Constructor not found error for classes without zero-argument constructor, like BigDecimal, Calendar. HOT 1
- Binding automatically between inteface and implementation in DI HOT 2
- Make HTTPResponse's primary response code non-final HOT 4
- Websocket Accept/WriteFrame/WriteMessage not processing more than 2 writes HOT 9
- Suggestion - Nightly Snapshots? HOT 1
- Serializer sometimes decodes a wrong class for RPC request HOT 7
- Any sample to declare local varible? HOT 2
- Happen error while uploading file HOT 2
- Release plan for v5.5 and v6 HOT 3
- Add Query Parameters? HOT 6
- RPCClient lock port on local HOT 1
- Version 6 does not support ipv6, version 5.5 supported ipv6 HOT 2
- Make classes Public to facilitate mocking. HOT 1
- RpcClient receive unexpected EOS HOT 2
- RpcClient cannot setup connection
- RpcServer serializer is wrong HOT 4
- Happen error with Serializer in native app HOT 2
- sorry a local problem
- How to hook the end of the HttpResponse so I can clean up some buffers? HOT 4
- Unknown characters when read messages from the websocket HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from activej.