jabber
- Войдите на сайт для отправки комментариев
Захотелось передать данные джаббером, на данную тему нашлась всего одна ссылка. 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)
логин/пароль/хост само собой писал действующие.
Не подскажете, как победить проблему с залогиниванием? Это лучший вариант, по другим учёткам сессия вовсе не открывалась.
eсть ли сообщение об ошибке? (стектрейс вижу)
телнет на этот хост и порт подключается успешно?
Я специально try/catch разбил на отдельные блоки (в оригинале они в одном).
срабатывает
Выходит, что на хост и порт подключение успешно, на ya.ru, qip.ru и ещё что то сообщения по недоступность хоста.
замените строки с printStackTrace на (не нашёл на оф.сайте ).
в этом процессинге вообще есть что-то из exception.getMessage() или exception.toString() ?
дайте полный вывод вашей программы, не своими словами ("сообщения по недоступность хоста").
описываю пошагово для скетча выше
при
в консоли сообщение:
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)
при (этот хост указан заведомо неверно):
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)
при:
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 возможно изменился. А с этим мне точно без посторонней помощи не разобраться.