【问题标题】:Passing a JSON across python socket to Javascript通过 python 套接字将 JSON 传递给 Javascript
【发布时间】:2012-12-07 12:04:02
【问题描述】:

我正在使用 python 套接字与 JavaScript 客户端进行通信。

http://docs.python.org/2/library/socket.html

并遵循 JavaScript 代码部分,

ws = new WebSocket("ws://localhost:7777/");
ws.onopen = function(){
  alert("websocket opened.");
}
ws.onclose = function(){
  alert("websocket closed.");
}
ws.onmessage = function(e) {
  alert(e.data);
}

我需要将 json 或字符串从 python 套接字传递给 JavaScript。仍然找不到传递json的方法。没有任何编码机制支持。

【问题讨论】:

标签: javascript python sockets websocket


【解决方案1】:

由于您在客户端使用 WebSockets,因此您的 Python 代码需要使用 Web Socket protocol 向客户端发送消息。查看javascript - WebSocket Server in Python 的答案,了解一些不错的选择。

简短回答:如果不实现 Web Socket protocol,您将无法使用 socket 并通过 Web Socket 向客户端发送消息。

【讨论】:

    【解决方案2】:

    在 python 中,您可以使用JSON module。 在 JavaScript 中你可以使用jQuery.parseJSON

    python 文档中的示例:

    >>> import json
    >>> json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])
    '["foo", {"bar": ["baz", null, 1.0, 2]}]'
    >>> print json.dumps("\"foo\bar")
    "\"foo\bar"
    >>> print json.dumps(u'\u1234')
    "\u1234"
    >>> print json.dumps('\\')
    "\\"
    >>> print json.dumps({"c": 0, "b": 0, "a": 0}, sort_keys=True)
    {"a": 0, "b": 0, "c": 0}
    

    来自 jQuery 文档的示例:

    var obj = jQuery.parseJSON('{"name":"John"}');
    alert( obj.name === "John" );
    

    【讨论】:

    • 我认为不应该归咎于上面的序列化
    • @ChamithMalinda Lol,这不是 python 或 js 的问题,这只是你必须在服务器端正确实现 websocket 协议工作。
    • 问题不在于 JSON,问题在于将字符串发送到客户端。你需要一些东西来在那里实现Web Socket
    【解决方案3】:

    嗯,事实上您不能将 python 的对象发送到客户端的 js。但是您可以在字符串中发送有效的 json,并通过 jQuery.parseJSON 在客户端进行解析。

    【讨论】:

    • 我无法从 python 套接字发送任何字符串。
    • @ChamithMalinda 我在上面回答你什么套接字它是用于 tcp/ip 协议的低级库它只是可以打开套接字或侦听它并向另一个发送各种消息。但是,如果您需要 WEBSOCKETS,则必须在服务器端的套接字库之上实现它。或者你可以使用像 tornado 或 gevent 之类的 allready 工作框架,它们已经支持 websockets 的操作。
    猜你喜欢
    • 2011-01-23
    • 2012-10-27
    • 2010-11-29
    • 1970-01-01
    • 2016-01-26
    • 2021-10-22
    • 1970-01-01
    相关资源
    最近更新 更多