如何在Java中订阅新的套接字消息

huangapple 未分类评论50阅读模式
英文:

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?

huangapple
  • 本文由 发表于 2020年6月29日 04:15:00
  • 转载请务必保留本文链接:https://java.coder-hub.com/62627756.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定