[英]How to process onmessage event data from websocket
我正在設置一個vert.x項目,在該項目中,我將從基於Java的服務器通過Websocket向javascript客戶端發送JSON片段。
Vert.x服務器發送JSON:
vertx.eventBus().send("mongodb-persistor", collectionsQuery, new Handler<Message<JsonObject>>() {
@Override
public void handle(Message<JsonObject> data) {
container.logger().info(data.body().encodePrettily());
ws.write(new Buffer(data.body().toString()));
}
});
在控制台上輸出的數據正在發送:
{“ collections”:[“ AAPL”,“ AZN”,“ GOOG”,“ YHOO”,“ system.indexes”],“ status”:“ ok”}
當我在客戶端收到此消息時:
socket.onmessage = function(event) {
alert("Received data from websocket: " + event.data);
var x = JSON.parse(event.data);
};
我收到錯誤消息:
未捕獲到的SyntaxError:意外令牌o(索引):124socket.onmessage
我已經閱讀了,似乎是因為JSON已經解析。 因此,如果我不解析JSON,該如何實際訪問我的數據? 如果我只是將event.data輸出為字符串,那么我得到的只是類型和大小,而不是控制台上記錄的數據。
編輯:即使在event.data仍使用正確的消息大小填充的情況下,我也從以下行/ sometimes /下收到錯誤“無法加載資源:服務器以狀態404響應”。
alert(“從websocket接收的數據:” + event.data);
感謝您的幫助,我希望這些信息能夠自我包含! 謝謝 :)
結果在vert.x中,我不應該返回包裝在Buffer中的JSON。
相反,我使用了方法writeTextFrame
vertx.eventBus().send("mongodb-persistor", collectionsQuery, new Handler<Message<JsonObject>>() {
@Override
public void handle(Message<JsonObject> data) {
container.logger().info(data.body().toString());
ws.writeTextFrame(data.body().encode());
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.