0

私は現在、TCP 経由で小さなチャット アプリケーションを開発することで node.js を学習しています (古典的なケース)。

私が今やりたいことは、このアプリケーションを拡張して静的ユーザーを使用することです。

  • メッセージングに関するすべてのロジックは、セッションではなくユーザーに基づく必要があります。
  • したがって、各セッションはユーザーへの参照とともに保存する必要があります (アプリケーションがユーザー名に基づいて正しいセッションでメッセージを送信できるようにするため)。
  • このデータを保存するために Redis を調べましたが、これまでのところ成功していません。

            tcpServer.on 'connection', (tcpSocket) -> tcpSocket.write "Welcome"
            redis.hmset("sessions", userid, tcpSocket)
            tcpSocket.on "data", (data) ->
                redis.hvals "sessions", (err, repl) ->
                    repl.forEach (reply, y) ->
                        reply.Write("Data is written to clients!")
        tcpServer.listen 7000
    

現在のエラー メッセージ: TypeError: Object [object Object] has no method 'write'

これは、今しようとしているように tcpSocket を保存できないことを示しています。これを正しく行うために微調整を行うことができるかどうか、またはこの解決策を再考する必要があるかどうか、誰かに教えてもらえますか?

4

2 に答える 2

2

Redis は、文字列、リスト、セット、ソート済みリスト、ハッシュ テーブルなど、ごくわずかなデータ型をサポートしています。それでおしまい。Date などの他の型は、文字列との間で簡単に変換できるため、使用することもできます。しかし、ソケットは複雑な内部オブジェクトであるため、おそらく文字列に変換できないため、Redis に保存できません。

于 2012-05-12T05:00:38.560 に答える
1

ソケット オブジェクトは Redis に格納するには複雑すぎるため、以下のリンクに従ってオブジェクトに識別子を追加する方法のようです。

もちろん、この識別子をデータベースに保存して、さまざまなオブジェクト間の関係を作成することもできます。

Node.js でソケットを一意に識別する方法

于 2012-05-12T09:39:02.627 に答える