jabber

ourlive
Offline
Зарегистрирован: 26.05.2012

Захотелось передать данные джаббером, на данную тему нашлась всего одна ссылка. http://wiki.processing.org/w/Jabber

Закопипастил скетч:


/**
jabber taken from http://wiki.processing.org/index.php/Jabber
@author Tom Carden
*/
 
String USERNAME = "*****";
String PASSWORD = "*****";
String HOST = "xmpp.org.ru";
int PORT = 5222;
 
String latestMessage;
PFont font;
 
void setup () {
  size(400,400);
 
  noLoop();
 
  font = createFont("Helvetica", 18);
 
  JabberContext context = new JabberContext(USERNAME, PASSWORD, HOST);
  Jabber jabber = new Jabber();
  JabberSession session = jabber.createSession(context);
 
  try {
    session.connect(HOST, PORT);   
  }
  catch (Exception e) {
    println("1");
    e.printStackTrace();
    exit();
  }
  try {
    session.getUserService().login();  
  }
  catch (Exception e) {
    println("2");
    e.printStackTrace();
    exit();
  }
  try {
    session.getPresenceService().setToAvailable(null,null,false);    
  }
  catch (Exception e) {
    println("3");
    e.printStackTrace();
    exit();
  }
  
 
  session.addMessageListener(new JabberMessageListener() {
    public void messageReceived(JabberMessageEvent event) {
      if (event.getMessageType() == JabberCode.MSG_CHAT) {
        JabberChatMessage msg = (JabberChatMessage) event.getMessage();
        if (msg.getType().equals(JabberChatMessage.TYPE_CHAT) || msg.getType().equals(JabberChatMessage.TYPE_NORMAL)) {
          latestMessage = msg.getBody();
          redraw();
        }
      }
    }
  }
  );
 
}
 
void draw() {
  background(0);
  if (latestMessage != null) {
    fill(255);
    textFont(font, 18);
    textAlign(LEFT, TOP);
    text(latestMessage, 5, 5, width-10, height-10);
  }
}

Покидал нужные библиотеки, а оно не заработало. Сразу же получаю ошибку по исключению, текст:

    at com.echomine.jabber.JabberUserService.login(JabberUserService.java:45)
    at jabber.setup(jabber.java:103)
    at processing.core.PApplet.handleDraw(PApplet.java:2245)
    at processing.core.PGraphicsJava2D.requestDraw(PGraphicsJava2D.java:243)
    at processing.core.PApplet.run(PApplet.java:2141)
    at java.lang.Thread.run(Thread.java:662)

логин/пароль/хост само собой писал действующие.

Не подскажете, как победить проблему с залогиниванием? Это лучший вариант, по другим учёткам сессия вовсе не открывалась.

toc
Offline
Зарегистрирован: 09.02.2013

eсть ли сообщение об ошибке? (стектрейс вижу) 

телнет на этот хост и порт подключается успешно?

ourlive
Offline
Зарегистрирован: 26.05.2012

Я специально try/catch разбил на отдельные блоки (в оригинале они в одном).

срабатывает

session.getUserService().login()

Выходит, что на хост и порт подключение успешно, на ya.ru, qip.ru и ещё что то сообщения по недоступность хоста.

toc
Offline
Зарегистрирован: 09.02.2013

замените строки с printStackTrace на (не нашёл на оф.сайте ).

в этом процессинге вообще есть что-то из exception.getMessage() или exception.toString() ?

дайте полный вывод вашей программы, не своими словами ("сообщения по недоступность хоста").

 

ourlive
Offline
Зарегистрирован: 26.05.2012

описываю пошагово для скетча выше

при

String HOST = "xmpp.org.ru";

в консоли сообщение:

2

    at com.echomine.jabber.JabberUserService.login(JabberUserService.java:45)
    at jabber.setup(jabber.java:78)
    at processing.core.PApplet.handleDraw(PApplet.java:2280)
    at processing.core.PGraphicsJava2D.requestDraw(PGraphicsJava2D.java:243)
    at processing.core.PApplet.run(PApplet.java:2176)
    at java.lang.Thread.run(Thread.java:662)
 

при (этот хост указан заведомо неверно):

String HOST = "ya.ru";

1
com.echomine.net.ConnectionFailedException: Connection Failed
    at com.echomine.jabber.JabberConnection.connect(JabberConnection.java:61)
    at com.echomine.jabber.JabberSession.connect(JabberSession.java:45)
    at com.echomine.jabber.JabberSession.connect(JabberSession.java:35)
    at jabber.setup(jabber.java:70)
    at processing.core.PApplet.handleDraw(PApplet.java:2280)
    at processing.core.PGraphicsJava2D.requestDraw(PGraphicsJava2D.java:243)
    at processing.core.PApplet.run(PApplet.java:2176)
    at java.lang.Thread.run(Thread.java:662)
 

при:

String HOST = "xmpp.ya.ru";

2
com.echomine.common.SendMessageFailedException: Send Failure: not connected to server
    at com.echomine.jabber.JabberConnection.send(JabberConnection.java:72)
    at com.echomine.jabber.JabberSession.sendMessage(JabberSession.java:57)
    at com.echomine.jabber.JabberUserService.login(JabberUserService.java:43)
    at jabber.setup(jabber.java:78)
    at processing.core.PApplet.handleDraw(PApplet.java:2280)
    at processing.core.PGraphicsJava2D.requestDraw(PGraphicsJava2D.java:243)
    at processing.core.PApplet.run(PApplet.java:2176)
    at java.lang.Thread.run(Thread.java:662)
06.09.2013 14:12:32 com.echomine.jabber.parser.JabberJAXPParser parse
INFO: IOException: socket closed
 

Иных сообщений нет exit(); и всё тут.

На предложение заменить строки, ответить мне нечем ибо познания скудны. Я только учусь.

Единственное вменяемое предположение проблемы это то, что пример скетча обращения к jabber написан в 2008, а echomine muse (откуда берутся библиотеки) последний раз обновлялась например 2 часа назад и формат обращения к API возможно изменился. А с этим мне точно без посторонней помощи не разобраться.