Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – 通过fsoe的websockets发送一个javascript对象大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
嗨所有我想通过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,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>

我的错误是什么?谢谢

解决方法

WebSockets支持发送和接收:字符串,类型化数组(ArrayBuffer)和Blob。发送前必须将Javascript对象序列化为上述类型之一。

要将对象作为字符串发送,您可以使用内置的JSON支持

ws.send(JSON.Stringify(object));

要将对象作为类型化数组发送,您可以使用javascript BSON库,例如this one

ws.send(BSON.serialize(object));

当您收到WebSocket消息时,您将需要反序列化它。

从WebSocket消息反序列化JSON字符串:

ws.onmessage = function (E) {
    var object = JSON.parse(e.data);
    ...
};

如果您通过WebSocket使用二进制消息,那么首先您应该设置binaryType属性,以便接收所有二进制消息作为类型化数组:

ws.binaryType = "arraybuffer";

那么反序列化将如下所示:

ws.onmessage = function (E) {
    var object = BSON.deserialize(e.data);
    ...
};

这是一篇关于using BSON in Javascript的博文;

大佬总结

以上是大佬教程为你收集整理的node.js – 通过fsoe的websockets发送一个javascript对象全部内容,希望文章能够帮你解决node.js – 通过fsoe的websockets发送一个javascript对象所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。