2

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

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

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

@rrayOfTestModelHhttp://schemas.datacontract.org/2004/07/Project.Model     ☺i)http://www.w3.org/2001/XMLSchema-instance☺

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

工人角色:

 BrokeredMessage socketioMessage = new BrokeredMessage(messageObject);
            WorkerRoleClient.Send(socketioMessage );

节点 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);
}}

我在这里收到的消息正文是一些普通的不可读的字符串。我正在从工人角色发送适当的对象。如果你们中的任何人对出了什么问题有任何想法,请告诉我

谢谢

4

3 回答 3

6

我终于找到了一种反序列化并获取 json 对象的方法。

C# 中的 Worker 角色

var recordsMessage = Newtonsoft.Json.JsonConvert.SerializeObject(data);
BrokeredMessage socketMessage = new BrokeredMessage(recordsMessage);

在 Node js 中接收:

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

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

            var recordsQueue = JSON.parse(jsonString);
}

希望这可以帮助某人

于 2013-03-11T05:04:33.077 回答
3

我知道这是一张旧票,但我想它可能会帮助将来的人,因为它今天帮助了我:)。

无需使用 nodejs 应用程序中的子字符串,您可以直接以字符串形式发送消息,而无需自动序列化。

为此,请使用以下代码:

using (Stream stream = new MemoryStream())
        using (TextWriter writer = new StreamWriter(stream))
        {
            writer.Write("Start");
            writer.Flush();
            stream.Position = 0;

            queueClient.Send(new BrokeredMessage(stream) { ContentType = "text/plain" });
        } 

希望它会有所帮助,

克莱门特

于 2016-04-15T10:42:12.163 回答
0

我也试图找到一个参考来帮助这样做,请检查以下链接: http ://www.rackspace.com/blog/node-swiz-node-js-library-for-serializing-deserializing-and-validating -objects-in-rest-apis/

它以任何请求的格式(JSON 或 XML)显示使用 Node JS 的序列化和反序列化

让我知道这是否适合你:)

于 2013-04-10T22:48:08.523 回答