如何处理来自 websocket 的消息事件数据
How to process onmessage event data from websocket
>我正在设置一个vert.x项目,在这个项目中,我通过websocket将一段JSON从基于Java的服务器发送到javascript客户端。
发送 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()));
}
});
在控制台上输出的数据:
{ "集合" : [ "AAPL", "AZN", "GOOG", "YHOO", "system.indexes" ], "状态" : "确定" }
当我在客户端上收到这个时:
socket.onmessage = function(event) {
alert("Received data from websocket: " + event.data);
var x = JSON.parse(event.data);
};
我收到错误:
未捕获的语法错误:意外的标记 o(索引):124socket.onmessage
我已经阅读了,似乎这是因为 JSON 已经被解析了。因此,如果我不解析 JSON,我如何实际访问我的数据?如果我只是将 event.data 输出为字符串,我得到的只是类型和大小,而不是控制台上记录的数据。
编辑:我还收到以下行/sometimes/的错误"无法加载资源:服务器以状态404响应",即使event.data仍然填充了正确的消息大小。
alert("从 websocket 接收数据:"+ event.data);
任何帮助都值得赞赏,我希望这些信息足够独立!谢谢:)
事实证明,
在 vert.x 中,我不应该返回包装在缓冲区中的 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());
}
});
相关文章:
- Node.js上的WebSocket,并在所有连接的客户端之间共享消息
- 为什么我的WebSocket客户端总是在发送消息后重新加载
- Websocket不接收消息
- 在从websocket服务器推送消息后更新$scope变量
- Nodejs-websocket:如何在没有服务器响应的情况下连续发送客户端消息
- WebSocket 服务器未收到消息
- 如何解析数据和二进制Websocket消息
- 在 websocket 消息上生成 AJAX POST 会导致超时异常
- 防止理论上丢失 WebSocket 中第一个接收的消息
- 在 AngularJs 中绑定 Websocket 消息
- 如何处理来自 websocket 的消息事件数据
- 一种管理WebSocket的方法,以便向所有连接的用户发送管理消息
- WebSocket onopen-消息只在某些时候发送
- 如何判断消息参数上的 websocket 的类型
- 使用javascript通过websocket发送消息
- WebSocket消息中的JavaScript双反斜杠
- 如何接收来自Vert的websocket消息.x服务器的Javascript
- 每1秒发送WebSocket消息
- 可以对WebSocket消息进行编码
- Firefox有WebSocket消息限制吗?