gpt4 book ai didi

c# - 在浏览器或 node.js 应用程序的 javascript 中反序列化 UTF8 编码的 Byte[]?

转载 作者:搜寻专家 更新时间:2023-11-01 00:09:10 29 4
gpt4 key购买 nike

我在 C# 中有一个事件类:

public class AreaInterventoCreata{
//public properties
}
var message= new AreaInterventoCreata();

我创建了此类服务器端的一个实例。我的目标是将此创作传达给订阅此类事件的客户。

因此,我将其传递给我的代理 RabbitMQ,如下 byte[] :

var responseBody = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(message))
responseChannel.BasicPublish(
"", // exchange
properties.ReplyTo, // routingKey
responseProperties, // basicProperties
responseBody); // body

一些 node.js 服务器已经订阅了这种消息:

q.subscribe(function (message) { 
for (var i = 0; i < sockets.length; i++) {
console.log('_sockets[' + i + '] emitted');
sockets[i].emit(event, message);
}
});

这个 node.js 自己接收到来自浏览器的 socket.io 连接,因此可以向这些套接字执行推送,例如这些浏览器:

sockets[i].emit(event, message);

最后,我在浏览器中收到了这条消息:

var socket = io.connect('http://localhost:8091');
socket.on('Events_AreaIntervento_AreaInterventoCreata:Events', function (data) {
var json = Utf8.decode(data);
});

当我通过 firebug 检查数据时,它是一个对象数据,其中包含一个定义为 data.data 的数组。

我假设这个数字数组是我在过程开始时给出的字节数组。我这个假设错了吗?

  • 我该如何处理它以便我可以在 javascript 中使用一些普通对象?(找到了!)
  • 我应该直接在 node.js 服务器级别将它翻译成 json 吗?它更有效率吗?还有更多事情要做吗?

ok 在这个 website 的帮助下找到了它(至少是它的一部分)

var Utf8 = {
// public method for url decoding
decodeArray: function (utfArray) {
var string = "";
var i = 0;
var c = c1 = c2 = 0;

while (i < utfArray.length) {

c = utfArray[i];

if (c < 128) {
string += String.fromCharCode(c);
i++;
}
else if ((c > 191) && (c < 224)) {
c2 = utfArray[i + 1];
string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
i += 2;
}
else {
c2 = utfArray[i + 1];
c3 = utfArray[i + 2];
string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
i += 3;
}

}
return string;
}
}

这样使用

<script>
var socket = io.connect('http://localhost:8091');
socket.on('Events_AreaIntervento_AreaInterventoCreata:Events', function (msg) {
var jsonString = Utf8.decodeArray(msg.data);
alert(jsonString);
});
</script>

但是我还是想知道是在客户端做更好,还是在node.js服务端做比较好,在node.js服务端怎么做?

最佳答案

我以前从未使用过 RabbitMQ,但看起来您将 JSON 字符串从 .NET 传递到 RabbitMQ 的方式有问题。您的“responseProperties”可能不正确,因为在 nodejs 或客户端上使用 JSON 之前您不需要解码 UTF-8 数组。

关于c# - 在浏览器或 node.js 应用程序的 javascript 中反序列化 UTF8 编码的 Byte[]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10160366/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com