gpt4 book ai didi

json - GWT/ cometd : any experience?

转载 作者:行者123 更新时间:2023-12-02 10:09:11 29 4
gpt4 key购买 nike

是否有任何方法可以从 GWT“订阅”JSON 对象流并监听保持事件连接上的传入事件,而无需尝试一次获取所有事件?我相信这项技术的流行词是“Comet”。

假设我有 HTTP 服务,该服务打开保持事件连接,并将带有传入股票报价的 JSON 对象实时放入其中:

{"symbol": "AAPL", "bid": "88.84", "ask":"88.86"}
{"symbol": "AAPL", "bid": "88.85", "ask":"88.87"}
{"symbol": "IBM", "bid": "87.48", "ask":"87.49"}
{"symbol": "GOOG", "bid": "305.64", "ask":"305.67"}
...

我需要监听此事件并实时更新 GWT 组件(表、标签)。有什么想法如何做到吗?

最佳答案

StreamHub 有一个 GWT Comet 模块:

http://code.google.com/p/gwt-comet-streamhub/

StreamHub是一个带有免费社区版的 Comet 服务器。有一个实际的例子 here .

您需要下载 StreamHub Comet 服务器并创建一个新的 SubscriptionListener,使用 StockDemo 示例作为起点,然后创建一个新的 JsonPayload 来传输数据:

Payload payload = new JsonPayload("AAPL");
payload.addField("bid", "88.84");
payload.addField("ask", "88.86");
server.publish("AAPL", payload);
...

从 google 代码站点下载 JAR,将其添加到您的 GWT 项目类路径并将包含内容添加到您的 GWT 模块:

<inherits name="com.google.gwt.json.JSON" />
<inherits name="com.streamhub.StreamHubGWTAdapter" />

连接并订阅您的 GWT 代码:

StreamHubGWTAdapter streamhub = new StreamHubGWTAdapter();
streamhub.connect("http://localhost:7979/");
StreamHubGWTUpdateListener listener = new StockListener();
streamhub.subscribe("AAPL", listener);
streamhub.subscribe("IBM", listener);
streamhub.subscribe("GOOG", listener);
...

然后在更新监听器中按照您喜欢的方式处理更新(也在 GWT 代码中):

public class StockListener implements StreamHubGWTUpdateListener {
public void onUpdate(String topic, JSONObject update) {
String bid = ((JSONString)update.get("bid")).stringValue();
String ask = ((JSONString)update.get("ask")).stringValue();
String symbol = topic;
...
}
}

不要忘记在您的 GWT 项目主 HTML 页面中包含streamhub-min.js。

关于json - GWT/ cometd : any experience?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/618656/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com