如何在节点js中反序列化代理消息的主体?

Bit*_*ian 2 json azure json.net node.js azureservicebus

我正在为我的windows azure项目在节点js(socketio.js)中实现socket.io服务器.我的工作角色是c#.我正在通过服务总线队列从worker角色向socketio.js发送代理消息.但是通过代理消息发送的对象没有被序列化为json对象.我不知道如何在节点js中访问此代理消息的主体.

我可以展示如何在worker角色中发送代理消息以及如何在节点js脚本中接收它.

代理消息的响应主体(即message.body)

@rrayOfTestModelHhttp://schemas.datacontract.org/2004/07/Project.Model     ?i)http://www.w3.org/2001/XMLSchema-instance?
Run Code Online (Sandbox Code Playgroud)

TestModel是通过代理消息体发送的对象模型的名称.

工人角色:

 BrokeredMessage socketioMessage = new BrokeredMessage(messageObject);
            WorkerRoleClient.Send(socketioMessage );
Run Code Online (Sandbox Code Playgroud)

Node Js脚本:

serviceBusService.receiveQueueMessage(queue, function (error, receivedMessage) {
    if (!error) {
        console.log(receivedMessage);
        if (receivedMessage != null) {
            var messageBody = receivedMessage.body;
            console.log(messageBody);       

            io.sockets.emit('news', messageBody);
}}
Run Code Online (Sandbox Code Playgroud)

我在这里收到的消息体是一些简单的不可读的字符串.我正在从工人角色发送适当的对象.如果你们中有人知道什么是错的,请告诉我

谢谢

Bit*_*ian 6

我终于找到了一种方法来对它进行序列化并获取json对象.

C#中的工作者角色

var recordsMessage = Newtonsoft.Json.JsonConvert.SerializeObject(data);
BrokeredMessage socketMessage = new BrokeredMessage(recordsMessage);
Run Code Online (Sandbox Code Playgroud)

在节点js中接收:

if (receivedMessage != null) {
            var messageBody = receivedMessage.body;

            var jsonString = messageBody.substring(messageBody.indexOf('['), messageBody.indexOf("]")+1);                

            var recordsQueue = JSON.parse(jsonString);
}
Run Code Online (Sandbox Code Playgroud)

希望这有助于某人