大家好,我正试图通过websockets发送一个javascript对象:
faye-websockets文档说明:
**send(message)**接受String或Buffer,并通过连接将文本或二进制消息发送到另一个对等项。
服务器端我使用节点和faye。
var WebSocket = require('faye-websocket');
var http = require('http');
var server = http.createServer();
server.addListener('upgrade', function(request, socket, head) {
var ws = new WebSocket(request, socket, head);
ws.send({topic:'handshake', data:'sdf487rgiuh7'});
});
server.listen(8000);
客户端:
<script>
var ws = new WebSocket('ws://localhost:8000');
ws.onmessage = function(e) {
console.log(e.data); //prints [Object object] string and not the object
};
</script>
我的错误是什么?谢谢
4条答案
按热度按时间vjhs03f71#
WebSockets支持发送和接收:字符串、类型化数组(ArrayBuffer)和Blob。Javascript对象在发送之前必须序列化为上述类型之一。
要将对象作为字符串发送,可以使用内置的JSON支持:
要将对象作为类型化数组发送,可以使用javascript BSON库,如this one:
当您收到WebSocket消息时,您需要将其反序列化。
从WebSocket消息反序列化JSON字符串:
如果您通过WebSocket使用二进制消息,则首先应设置binaryType属性,以便将所有二进制消息作为类型化数组接收:
然后反序列化将如下所示:
这里有一篇关于using BSON in Javascript的博客文章;
b0zn9rqh2#
我基本上是在使用Socket.IO,但是看起来您需要在服务器中字符串化数据,然后在客户机中解析它,如下所示:
在服务器中:
在客户端中:
zc0qhyus3#
委托单位:
伺服器:
vxbzzdmp4#