我正在设置一个vert.x项目,我在其中通过websocket从我的基于Java的服务器向javascript客户端发送一段JSON。
发送JSON的Vert.x服务器:
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()));
}
});
在控制台上输出的数据:
{ &#34;集合&#34; :[&#34; AAPL&#34;,&#34; AZN&#34;,&#34; GOOG&#34;,&#34; YHOO&#34;,&#34; system.indexes&#34; ] &#34;状态&#34; :&#34; ok&#34; }
当我在客户端收到此邮件时:
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作为字符串,我得到的只是类型和大小,而不是控制台上记录的数据。
编辑: 我也收到错误&#34;无法加载资源:服务器响应状态404&#34;关闭以下行/有时/,即使event.data仍然填充了正确的邮件大小。
警告(&#34;从websocket收到的数据:&#34; + event.data);
感谢任何帮助,我希望这些信息足够自足! 谢谢:))
答案 0 :(得分:0)
在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());
}
});