2017-04-20 9 views
0

Node上でsocket.ioライブラリを使用しています。私はコンマで区切りたい文字列が同じユーザーの別のハッシュ(ソケットID)を持っている場合、ソケットIDのハッシュがコンマを持っていればこの解決策は破られます。ソケットIDのハッシュは、カンマを使用している場合socket.ioハッシュのソケットIDにコンマを使用できますか?

[email protected]:xlCGTJrldYLAs8eoAAAD,nLS5Avb1WHdwarrjAAAC 

、スプリット機能が動作しない

編集:

は、例えば、私はこの文字列を保存したい

マイコード:

var s = "[email protected]:xlCGTJrldYLAs8eoAAAD,nLS5Avb1WHdwarrjAAAC" 
var dd = s.split(":"); 
dd[1].split(","); 
//result ["xlCGTJrldYLAs8eoAAAD", "nLS5Avb1WHdwarrjAAAC"] 

このコードはうまく動作しますが、IDのsocket.ioハッシュに ":"または "、"というコードがある場合は、 ありがとうございます!

+0

あなたの質問が全くわかりません。 Who/whatはこの文字列を生成しますか?あなたは何を分割しようとしていますか、どのコードで、あなたは何を期待していますか、何を得ていますか?コメントをいただきありがとうございます。 – jcaron

+0

すべてのソケットID接続を保存するための文字列を生成します。私はすべての後に分割しようとします: " –

+0

あなたは質問の半分に答えていません。 – jcaron

答えて

1

socket.io socket.ioで生成されたIDには、カンマ付きの名前空間を使用していない限り、コンマは含まれません。

これらの内容を理解するには、idの生成方法を確認するためにsocket.ioコードを調べる必要があります。 socket.ioを(コードをsleuthingがやや困難)いくつかのリポジトリに多くの異なる層に内蔵されているが、IDの生成は、このパスをたどる:engine.io/server.js on line 281

var id = this.generateId(req); 

。そして、genereateId method

Server.prototype.generateId = function (req) { 
    return base64id.generateId(); 
}; 

そして、​​は、base64でエンコードされた値を返します。また、base64 encodingにはカンマが含まれていません。

したがって、socket.ioによって生成されたid値のコア部分にはカンマが含まれていないと判断できます。

shown hereとしてIDの先頭に名前空間とハッシュ値を追加することができますsocket.ioコードがあります:client.idbase64id.generateId()で前のコードで生成されたIDです

this.id = nsp.name !== '/' ? nsp.name + '#' + client.id : client.id; 

コンマで名前空間を使用していない場合は、socket.idにカンマを含めないでください。カンマ付きの名前空間を使用している場合は、socket.idにコンマが含まれている可能性があります。

関連する問題