我在Linux服务器上运行了一个websocket,以便使用本地网络为连接的客户端服务。我的目标是让客户端控制一些配置。
Web应用程序(由PHP和HTML页面组合而成)充当一个接口,当加载主页时,它使用纯Javascript var socket = new WebSocket("ws://SERVER_NAME:90/");连接到websocket,一个HTML元素=输入‘’text‘应该发送一个具有键和值的JSON对象,如下所示:
变量数据= {}; data.key = input_value; socket.send(JSON.stringify(data));
更清楚的是:假设key是问候语,value是Hello,所以在JSON编码之后,将使用前面提到的web将字符串{"Greeting":"Hello"}发送到服务器,在这里,服务器将其存储在缓冲区STDIN中,直到web套接字脚本读取为止。
Web套接字的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传递
我的网络套接字没问题,我可以从任何客户端接收任何字符串,
注意:我知道我可以做一个if /来检查键,如果它包含在数组中,然后调用匹配的函数,但是它是无用的,因为我有很多函数,For..Loop花了很多不想要的时间。
很抱歉有这么长的问题,但是解决这个问题是很有必要的。我很感激每一个帮助或建议。
发布于 2016-07-18 16:38:43
通常,您会将这些函数打包到一个dict中:
def greeting(value):
print "Hello " + str(value)
FUNC_MAP = {
'Greeting': greeting,
}然后调用这个函数,
data = json.loads(stdin.readline());
for func_name, value in data.items():
FUNC_MAP[func_name](value)当然,您可以在这里进行一些改进(例如,对不存在的函数进行错误处理,等等)。
https://stackoverflow.com/questions/38441876
复制相似问题