-1
xmpp를 사용하여 메시징 서비스를 구현하려고합니다. 나는 그것을 달성하기 위해 SMACK API와 gtalk를 사용하고있다.SMACK API 및 GTALK를 사용하여 메시지를 보내는 방법은 무엇입니까?
서버에 성공적으로 연결할 수 있습니다. 로스터의 사용자 목록도 얻습니다. 그러나 gtalk에서 모든 사용자에게 메시지를 보내려고하면 메시지가 전달되지 않습니다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Collection;
import org.jivesoftware.smack.Connection;
import org.jivesoftware.smack.ConnectionConfiguration;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.Roster;
import org.jivesoftware.smack.RosterEntry;
import org.jivesoftware.smack.Chat;
import org.jivesoftware.smack.ChatManager;
import org.jivesoftware.smack.MessageListener;
import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smack.packet.Presence;
import org.jivesoftware.smack.SmackConfiguration;
import org.jivesoftware.smack.SASLAuthentication;
public class MySmackDemo implements MessageListener {
public static String username="[email protected]";
public static String password="password";
public static String id="";
static ConnectionConfiguration config;
XMPPConnection conn;
public static Chat chat;
public static XMPPConnection connection = new XMPPConnection("gmail.com");
public static boolean free=false;
public static void main(String args[]){
System.out.println("... in main function .......");
MySmackDemo mySmackObj = new MySmackDemo();
mySmackObj.connectTOGTalk();
mySmackObj.displayBuddyList();
System.out.println("-----");
String msg="";
try {
mySmackObj.sendMessage("hello from smack", "[email protected]");
}
catch(Exception e){
System.out.println("sending failed");
e.printStackTrace();
}
}
private static void connectTOGTalk(){
try {
//establish connection between client and server.
connection.connect();
System.out.println("Connected to " + connection.getHost());
//call base class function to get login
connection.login(username,password);
System.out.println(connection.isAuthenticated());
Presence presence = new Presence(Presence.Type.available);
connection.sendPacket(presence);
System.out.println("presence is ............" + presence.toXML());
}
catch (Exception e) {
e.printStackTrace();
}
}
/*
* Function to send message to specified user
*/
public void sendMessage(String message, String to) throws XMPPException
{
System.out.println("Message is ......."+message);
Chat chat = connection.getChatManager().createChat(to, new MySmackDemo());
System.out.println("Chat obj is ........"+ chat);
}
/**
* Function to display user list
*/
public void displayBuddyList()
{
Roster roster = connection.getRoster();
roster.setSubscriptionMode(Roster.SubscriptionMode.manual);
Collection<RosterEntry> entries = roster.getEntries();
System.out.println("\n\n" + entries.size() + " buddy(ies):");
for(RosterEntry r:entries)
{
System.out.println(r.getUser());
System.out.println(r.getName());
}
}
public void processMessage(Chat chat, Message message)
{
if(message.getType() == Message.Type.chat)
System.out.println(chat.getParticipant() + " says: " + message.getBody());
}
}
나는이 오류가 무엇입니까 :
java.lang.NullPointerException
at MySmackDemo.main(MySmackDemo.java:65)
sending failed
을 추가 설정/구성이 거기에 필요한 다음
내 코드? 메시지를 보내고 확인하는 방법은 무엇입니까?