How do i receive a message from the server? I have the part where i could send message to the server but not receiving it from the server? How and what should it do? i am using xmpp as a transfer protocol
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());
}
}
}
Make sure you have the accounts you use there in the server.
You need to listen for errors. Attach listeners to the respective connection publishers like conn.addConnectionCreationListener and such. For this, you need to implement interfaces like MessageListener, ConnectionCreationListener, org.jivesoftware.smack.ConnectionListener, PacketListener. When implementing these interfaces, the override connectionClosedOnError(Exception e) might give you an idea what’s wrong and in the overridden method processPacket(Packet packet) you should check for errors like this: