我很难通过web套接字(使用Action Cable)将信息从python脚本正确地传递到rails应用程序。
我想在python字典中使用输入信息,如下所示:
message = {
'command':"subscribe",
'identifier':{
'channel': 'RaspChannel',
'rasp_local_id': '1'
}
}然后将其转换为JSON,通过Action Cable设置的web套接字,然后在服务器端解析为ruby hash。
出于某种原因,我只是通过套接字发送一个普通字符串来使其工作:
'{"command":"subscribe","identifier":"{\\"channel\\":\\"RaspChannel\\", \\"rasp_local_id\\": \\"1\\"}"}'但是我不能通过发送json.dumps(message)来让它工作,即使它返回了对我来说很好的东西:
{"command": "subscribe", "identifier": {"channel": "RaspChannel", "rasp_local_id": "1"}}我认为action cable协议在它接收的json字符串上使用了经典的ruby JSON.parse方法,并且出于某种原因,它总是抛出一个解析错误,除非我使用上面提到的普通字符串。
然而,由于我想让消息更复杂,如果我能让它从一开始就能与实际的Python字典一起工作,那就更好了。
知道我错过了什么吗?
发布于 2020-02-04 20:55:28
经过更多的研究,这个问题似乎不是来自于JSON python编码、ruby解码,也不是我滥用了这些方法。
实际上,看起来actioncable在接收消息时使用的协议并不完全依赖于“经典的”JSON,而是使用“JSON内的转义JSON”作为标识符
有关rails github问题的更多信息,请单击此处https://github.com/rails/rails/issues/22675
https://stackoverflow.com/questions/60045207
复制相似问题