ローカルネットワークを使用して接続されたクライアントに対応するために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,
}
をそして:
ありがとうございました...それは私が必要なものですが、( "Hello"に整数値を連結できない)小さなエラーがあります。しかし、すべて正しく行われています。 –
@AbdulkaderKhateeb - 私あなたが更新しても、エラーはなくなるはずです。 'Hello '+ str(value)' 'Hello' + value''ではなく' 'Hello '+ str(value)' 'のようになります) – mgilson
Mr、@mgilson、辞書にない関数を呼び出すときに例外をスローする方法を教えてください。私はPythonのために全く新しいです。ありがとうございます:) –