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 );

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

ここで受け取るメッセージ本文は、わかりにくい文字列です。そして、ワーカーロールから適切なオブジェクトを送信しています。何がうまくいかないかについて何か考えがあれば教えてください

ありがとう

4

3 に答える 3

6

私はついにそれを逆シリアル化し、jsonオブジェクトを取得する方法を見つけました。

C#でのワーカーの役割

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)のいずれかでノードJSを使用したシリアル化と逆シリアル化を示します

これがあなたとうまくいくかどうか私に知らせてください:)

于 2013-04-10T22:48:08.523 に答える