Naoki23
@Naoki23 (早稲田 直輝)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

socket.ioでサーバーからクライアントにjson配列を送れない

解決したいこと

node.jsとSocket.ioを使って対戦型のクイズゲームを開発しています。
サーバーからクイズの問題文と選択肢のデータをクライアント側に送信したいです。
データは次のような形式です。

[{
  question: "問題文",
  answer: ["選択肢1", "選択肢2", "選択肢3", "選択肢4"]
},
{
  question: "問題文",
  answer: ["選択肢1", "選択肢2", "選択肢3", "選択肢4"]
}]

発生している問題

その、サーバーからクライアント側にデータが正しく送信されておらず、ブラウザでconsole.logすると「length: 0_proto_: Array(0)」と表示されています。

該当するソースコード

// サーバー側
var query = getQuery(); // getQueryでは上記のデータ形式でreturnされます。
io.emit('getQuery', query);

// クライアント側
socketio.on('getQuery', function (val) {
  aryQuery = val;
});

どうすれば解決できますでしょうか?

0

1Answer

Socket.io知らないけど
getQuery();が空の配列を返している可能性
io.emit('getQuery', query);のqueryの部分に送信したい配列をベタ書きしてもダメ?
io.emit('getQuery', "hogehoge");の場合は値が渡る?

0Like

Comments

  1. @Naoki23

    Questioner

    回答ありがとうございます!おかげで解決することができました。
    ・io.emit('getQuery', query);のqueryの部分に送信したい配列をベタ書きしてもダメ?
    という質問に対して質問文のデータ形式の例の配列をそのまま送ると正常に受け取ることができました。
    正しく送れない原因はgetQuery()がasync functionで返される値がPromise(返したい配列)となっていたためでした。

    質問前の検証が不十分ですみませんでした。

Your answer might help someone💌