我创建了一个应该在后台运行的ReadMessage线程,并在它们进入时读取消息。这就是它的外观:
Thread ReadMessages = new Thread(new Runnable() {
public void run() {
try {
while(socket.isConnected()){
ServerMsg = in.readLine();
jTextArea1.append(ServerMsg);
}
} catch (IOException ex) {
System.out.println("Something went wrong! THREAD");
}
}
});
每次启动程序时都会启动它:
public TwitchBotFenster() throws IOException, Exception {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
initComponents();
ReadMessages.start();
}
我遇到的问题是,当我连接到twitch irc时,它只会读取第一条消息,但如果我在聊天中写了一些内容则不然。我真的不明白这个问题。我的想法是,当连接套接字时,它应该读取所有消息。
编辑:
这是我向服务器发送消息的方式:
public void SendMessage() throws IOException{
try{
if(BotName == null){
this.jTextArea1.append("You are not logged in!\n");
}else{
this.ClientChatMessage = this.jTextField4.getText();
out.write(":" + BotName + "!" + BotName + "@" + BotName + ".tmi.twitch.tv PRIVMSG #" + this.Channelname + " :" + this.ClientChatMessage + "\n");
out.flush();
this.jTextField4.setText("");
this.jTextArea1.append("*" + BotName + ">> " + ClientChatMessage + "\n");
}
this.jTextField4.setText("");
}catch(Exception exe){
System.out.println("Something went horribly wrong! (SendMessage/func)\n");
}
}
EDIT2:
每当我在jTextField中按Enter键时都会发送消息:
private void jTextField4ActionPerformed(java.awt.event.ActionEvent evt) {
try {
SendMessage();
} catch (IOException ex) {
System.out.println("Something went horribly wrong! (SendMessage)\n");
}
}