【问题标题】:Send string to python websocket using JavaScript使用 JavaScript 将字符串发送到 python websocket
【发布时间】:2017-06-08 13:16:32
【问题描述】:

我有一个本地运行的 python websocket(下面的代码),我让它无限运行。我主要是从一个例子中复制代码。该示例使用另一个 python 客户端脚本向其发送数据(也在下方)。这就像一个魅力,非常简单;正是我所需要的,因为我有一些 Python 经验,但对“网络/互联网”事物一无所知。

现在,我不想使用 python 客户端,而是想通过 javascript 从 html 文档发送消息。是否有任何关于一小段“愚蠢”代码的指导,只需向 python websocketserver 发送一条消息(字符串)?然后,python 脚本将能够使用这些数据执行不同的进程。

Python 服务器:(有效 :))

from socket import *

host = "localhost"
port = 8089
buf = 1024
addr = (host,port)

sock = socket(AF_INET,SOCK_DGRAM)
sock.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
sock.bind(addr)

print "Websocket active."
print "address:\t"+host+":"+str(port)

while 1:
    data,addr = sock.recvfrom(buf)
    if not data:
        print "Client has exited!"
        break
    else:
        print "\nReceived message '", data,"'"

# Close socket
sock.close()

Python 客户端(有效,但不需要)

from socket import *

host = "localhost"
port = 8089
buf = 1024
addr = (host,port)

sock = socket(AF_INET,SOCK_DGRAM)
def_msg = "===Enter message to send to server===";
print "\n",def_msg

while (1):
    data = raw_input('>> ')
    if not data:
        break
    else:
        if(sock.sendto(data,addr)):
            print "Sending message '",data,"'....."

sock.close()

现在转向 Javascript 客户端..
不能这么简单吗? ;

var socket = new WebSocket("ws://localhost:8089");
socket.onopen = function () {
    alert("alerting you");
    socket.send('Pingel');
};

【问题讨论】:

    标签: javascript python websocket


    【解决方案1】:

    您的 Python 服务器实现了一个常规的 TCP 服务器,但是您的 JS 代码充当了一个 WebSocket 客户端,这是一个基于 TCP 的实际适当的协议:https://www.rfc-editor.org/rfc/rfc6455

    如果你想让两端正常通信,你需要运行一个WebSocket服务器,像这样:https://github.com/dpallot/simple-websocket-server

    【讨论】:

    • 谢谢,这很清楚,那么也许 websockets 不是要走的路吗?我可以不使用 websocket 服务器,而是将变量传递给 Python TCP 服务器吗?
    • @WillemvanOpstal 如果您打算在浏览器中运行 JS 代码,那么您只能选择服务器具有的可以使用的协议(HTTP、HTTPS、WebSockets 或 WebRTC)支持。
    • 这是有道理的。我确实想在浏览器中运行 JS,尽管是在本地系统上。我会尝试让一个 websocket 服务器运行,但它没有;对我来说还没有成功...谢谢你的提示!
    猜你喜欢
    • 1970-01-01
    • 2016-11-13
    • 1970-01-01
    • 2014-10-11
    • 1970-01-01
    • 2020-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多