英文:
How can I subscribe to new socket messages in Java
问题
我正在制作一个简单的客户端,通过Java套接字连接到另一台服务器,等待来自该服务器的消息并修改正在运行的视频游戏。
Socket socket = new Socket(server, 6667);
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String line = null;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
目前,while循环占据了整个主线程,解决这个问题的方法是将此过程放在单独的线程上。最理想的情况是,我想创建一个监听器,每当线程收到新消息时会被触发,并将其发送出去与主线程交互。
我想知道在Java套接字中是否存在内置的层,用于处理这种类型的过程(例如发布订阅或onMessage),因为这似乎是一个非常常见的用例。如果我在搜索中漏掉了类似的内容,请告诉我,对于我的无知我深感抱歉,提前谢谢。
编辑:
TLDR:
我有一个主线程正在被游戏占用,我想从服务器读取传入的消息,除了手动使用监听器之外,是否有任何内置的方法来实现这一点?
英文:
I was making a simple client which connected to another server via Java Sockets and would await messages from that server and modify a video game it is running.
Socket socket = new Socket(server, 6667);
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream( )));
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream( )));
String line = null;
while ((line = reader.readLine( )) != null) {
System.out.println(line);
}
Currently the while loop occupies the entire main thread and a way to fix that would be to put this process on a separate thread. Best case scenario I would like to create a listener that gets pinged whenever the thread receives a new message and sends it off to interact with the main thread.
I was wondering whether there exists a built in layer for this kind of process in java sockets (like pubsub or onMessage) because it feels like a very popular use case. Please let me know if I've missed something like this in my search, I apologize for my ignorance and thank you in advance.
Edit:
TLDR:
I have a main thread which is being occupied by a game and I would like to read incoming messages from a server, is there any built in way to do it besides employing listeners the manual way?
专注分享java语言的经验与见解,让所有开发者获益!
评论