2016-07-18 13 views
0

ローカルネットワークを使用して接続されたクライアントに対応するためにLinuxサーバー上でwebsocketを実行しました。私の目的は、クライアントにいくつかの設定を制御させることです。PythonでJSONキーと値を使用して関数を呼び出す

(PHPやHTMLページの配合)Webアプリケーションは、インターフェースとして役割を果たし、ホーム・ページがロードされるとき それは純粋なJavascriptをvar socket = new WebSocket("ws://SERVER_NAME:90/"); にHTML要素=入力[「テキスト」]を使用してのWebSocketに接続する必要があります次のようなキーと値を持つJSONオブジェクトを送信します。

var data = {};
data.key = input_value;
socket.send(JSON.stringify(data));さんこんにちはkeyが挨拶され、valueがあるとしましょう、だから、JSONエンコーディングした後、文字列{"Greeting":"Hello"}は、バッファSTDINで、どこサーバーに格納して述べたように、ウェブソケットを使用してサーバーに送信されます。

はより明確にするために、ウェブソケットスクリプトがそれを読むまで。ウェブソケットの

のPythonスクリプト:

data = json.loads(stdin.readline()); 
for x in data: 
    # the code that run the function Greeting 
    pass 

一言で:

機能(挨拶)which is the JSON-KEYを呼び出し、入力パラメータとして引数のHelloを渡す方法which is JSON-VALUE

私のWebソケットは問題なく、任意のクライアントから任意の文字列を受け取ることができます。

注:私はそれが配列に含まれるなら/それ以外の場合、キーをチェックするために作ることができ、その後マッチした関数を呼び出すことを知っているが、私は多くの機能を持っているためので、それは無用です。..ループは望ましくない時間を過ごした。

この長い質問は申し訳ありませんが、その問題を解決する必要があります。 私はあらゆる助けや提案に感謝しています。あなたはここに作ることができるいくつかの改善があるかもしれません。もちろん、

data = json.loads(stdin.readline()); 
for func_name, value in data.items(): 
    FUNC_MAP[func_name](value) 

、関数を呼び出すために、その後

def greeting(value): 
    print "Hello " + str(value) 

FUNC_MAP = { 
    'Greeting': greeting, 
} 

をそして:

答えて

0

通常は、辞書に機能をパックしたいです(存在しない関数に対するエラー処理など)。

+0

ありがとうございました...それは私が必要なものですが、( "Hello"に整数値を連結できない)小さなエラーがあります。しかし、すべて正しく行われています。 –

+0

@AbdulkaderKhateeb - 私あなたが更新しても、エラーはなくなるはずです。 'Hello '+ str(value)' 'Hello' + value''ではなく' 'Hello '+ str(value)' 'のようになります) – mgilson

+0

Mr、@mgilson、辞書にない関数を呼び出すときに例外をスローする方法を教えてください。私はPythonのために全く新しいです。ありがとうございます:) –

関連する問題