【发布时间】:2014-07-14 13:28:24
【问题描述】:
我在做什么?
我正在尝试使用用户界面构建应用程序。用户将输入搜索词,然后使用 websocket 连接,我将开始将过滤后的推文返回到 UI。
我做了什么?
我有一个看起来像
TwitterFilter 类
public TwitterFilter(String searchTerm) {
final ConfigurationBuilder configurationBuilder = getConfigurationBuilder();
twitterStream = new TwitterStreamFactory(configurationBuilder.build()).getInstance();
final StatusListener statusListener = getStatusListener();
filterQuery = new FilterQuery();
filterQuery.track(new String[] { searchTerm });
filterQuery.language(new String[] { "en" });
twitterStream.addListener(statusListener);
}
public void getFilteredTweets() {
twitterStream.filter(filterQuery);
}
private static StatusListener getStatusListener() {
return new StatusListener() {
@Override
public void onStatus(final Status status) {
System.out.println(status.getText());
}
@Override
public void onDeletionNotice(final StatusDeletionNotice statusDeletionNotice) {
}
@Override
public void onTrackLimitationNotice(final int i) {
}
@Override
public void onScrubGeo(final long userId, final long upToStatusId) {
}
@Override
public void onStallWarning(final StallWarning stallWarning) {
}
@Override
public void onException(final Exception e) {
e.printStackTrace();
}
};
}
private static ConfigurationBuilder getConfigurationBuilder() {
final ConfigurationBuilder configurationBuilder = new ConfigurationBuilder();
configurationBuilder.setDebugEnabled(true);
configurationBuilder.setOAuthConsumerKey(CONSUMER_KEY);
configurationBuilder.setOAuthConsumerSecret(CONSUMER_SECRET);
configurationBuilder.setOAuthAccessToken(ACCESS_TOKEN);
configurationBuilder.setOAuthAccessTokenSecret(ACCESS_TOKEN_SECRET);
return configurationBuilder;
}
还有一个带有 websocket 代码的类,它需要返回 Twitter 过滤的推文,看起来像
@ServerEndpoint("/tweets")
public class TweetStreamServer {
@OnMessage
public void tweets(final String message, final Session client) throws IOException, InterruptedException {
final TwitterFilter twitterFilter = new TwitterFilter("india");
for (final Session peer: client.getOpenSessions()) {
peer.getBasicRemote().sendText(twitterFilter.getFilteredTweets()); // compilation error
}
}
}
有问题?
由于filter() 或sample() 方法都没有返回任何东西(void),我如何返回推文? (documentation)?
【问题讨论】: