Что я хочу?
Я пытаюсь написать приложение, в котором клиент отправляет запрос и на основе сервера запросов получает твиттер-поток и нажимает на клиента.
Что у меня есть?
У меня есть простая структура, где клиент может подключиться к серверу, а сервер отвечает
TweetStreamServer
package com.self.tweetstream;
import javax.websocket.OnMessage;
import javax.websocket.server.ServerEndpoint;
@ServerEndpoint("/tweets")
public class TweetStreamServer {
@OnMessage
public String tweets(final String message) {
return message;
}
}
TweetStreamClient
@ClientEndpoint
public class TweetStreamClient {
public static CountDownLatch latch;
public static String response;
@OnOpen
public void onOpen(Session session) {
try{
session.getBasicRemote().sendText("Hello World!");
} catch (IOException e) {
e.printStackTrace();
}
}
@OnMessage
public void printTweets(final String tweet) {
System.out.println("Tweet:" + tweet);
response = tweet;
latch.countDown();
}
}
TweetStreamTest
@Test
public void test() throws URISyntaxException, IOException, DeploymentException, InterruptedException {
System.out.println("URI: " + getEndpointUrl());
TweetStreamClient.latch = new CountDownLatch(1);
Session session = connectToServer(TweetStreamClient.class, "tweets");
assertNotNull(session);
assertTrue(TweetStreamClient.latch.await(10, TimeUnit.SECONDS));
assertEquals("Hello World!", TweetStreamClient.response);
}
Вопрос
Я смущен, как я могу теперь отправлять непрерывные твиты, которые я получаю от Twitter, потому что мой серверный метод в соответствии с API
@OnMessage
public String tweets(final String message) {
return message;
}
Это означает, что он ожидает, что сообщение вернет что-нибудь.
Как я могу отправить поступающие данные от Twitter-отправки клиенту?
Это сработало для меня
@OnMessage
public void tweets(final String message, Session client) throws IOException, InterruptedException {
int i = 0;
for (Session peer : client.getOpenSessions()) {
while (i < 10) {
System.out.println("sending ...");
peer.getBasicRemote().sendText("Hello");
Thread.sleep(2000);
i++;
}
}
}
Спасибо Аруну Гупте за помощь в его твитах :)