如何接收来自服务器的消息?我有一部分可以向服务器发送消息但不能从服务器接收消息?它应该怎么做?我使用 xmpp 作为传输协议
package com.example.xmpp.asmack;
import org.jivesoftware.smack.Chat;
import org.jivesoftware.smack.ConnectionConfiguration;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.XMPPException;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;
import android.widget.TextView;
public class XMPPAsATransportProtocol extends Activity implements OnClickListener {
XMPPConnection conn;
TextView output;
final String HOST = "vps01.fit3140hack.org";
final int PORT = 5222;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d("xmppasatransportprotocol", "got to start");
setContentView(R.layout.main);
View createbutton = findViewById(R.id.button1);
View messagebutton = findViewById(R.id.button2);
View closebutton = findViewById(R.id.button3);
output = (TextView) findViewById(R.id.textView2);
Log.d("xmppasatransportprotocol", "got buttons");
createbutton.setOnClickListener(this);
messagebutton.setOnClickListener(this);
closebutton.setOnClickListener(this);
}
private void sendMessage() throws XMPPException {
Log.d("xmppasatransportprotocol", "sendmessage");
Chat chat = conn.getChatManager().createChat("22686274test2@" + HOST, null);
EditText message = (EditText)findViewById(R.id.editText1);
chat.sendMessage(message.getText().toString());
}
private void openConnection() throws XMPPException {
Log.i("xmppasatransportprotocol", "openconnection");
ConnectionConfiguration config = new ConnectionConfiguration(HOST, PORT);
config.setSASLAuthenticationEnabled(true);
conn = new XMPPConnection(config);
conn.connect();
conn.login("22686274test1", "dummy");
}
private void closeConnection() {
Log.i("xmppasatransportprotocol", "closeconnection");
conn.disconnect();
}
public void onClick(View v) {
try {
switch(v.getId()) {
case R.id.button1:
openConnection();
Log.i("xmppasatransportprotocol", "Connected to " + HOST + ":" + PORT);
output.setText("Connected to " + HOST + ":" + PORT);
break;
case R.id.button2:
sendMessage();
Log.i("xmppasatransportprotocol", "message sent");
EditText message = (EditText)findViewById(R.id.editText1);
output.setText("Message sent:\n" + message.getText().toString());
break;
case R.id.button3:
closeConnection();
output.setText("Disconnected");
break;
default:
throw new Exception("screwed up exception");
}
} catch (Exception e) {
Log.d("xmppasatransportprotocol", "exception caught:" + e.getMessage());
output.setText("Error: " + e.getMessage());
}
}
}