Javascript WebSocket需要更多延迟

2024-03-29 05:16:41 发布

您现在位置:Python中文网/ 问答频道 /正文

在浏览器上使用WebSocket API时,握手开始时需要延迟。

服务器是一个带有wifi屏蔽IDW01M1的核子板(L476RG)。 客户端是FirefoxV50.1

1。测试服务器

我编写了Python脚本来建立WebSocket连接。我注意到我需要先“连接”到服务器。然后在600毫秒延迟后启动交换 我不能运行我的服务器比这更快。记住这是一个业余爱好级别的MCU

2。测试客户端

我用Python制作了一个本地服务器。我的Javascript客户端连接到它没有问题。在

#!c:/Python27/python.exe -u
import socket
import time

TCP_IP = '172.24.220.1'
TCP_PORT = 3000
BUFFER_SIZE = 1024
#
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# Connect first
connected = False
while not connected:
    try:
        s.connect((TCP_IP, TCP_PORT))
        connected = True
    except Exception as e:
        pass

#------------------------------------
time.sleep(0.6)
#------------------------------------

# Send first bytes
s.send("Good-hi")
# Ping pong
data = s.recv(BUFFER_SIZE)

在使用WebSocket库时,Python也会出现同样的问题

^{pr2}$

这个page解释了WebSocket方法内部发生了什么。 使用Python,我可以在不进行任何握手的情况下打开一个套接字(RAW socket),然后通过手动发送头来启动握手。 但是这在浏览器中是不可能的,因为我无法打开原始套接字。 至少,这是我目前的理解。在

摘要,是否有一种方法可以先在客户端和服务器之间建立连接,然后随意启动握手?在


Tags: 方法importip服务器客户端sizetimeport
1条回答
网友
1楼 · 发布于 2024-03-29 05:16:41

如果在javascript中使用WebSockets api。在

有一个onopen事件,它在连接准备就绪时被激发。 你可以在里面放一个setTimeout来延迟发送第一个数据。在

我认为你不能推迟握手本身。在

可能尝试将new Websocket放在setTimeout中,以确保在尝试启动连接之前所有文件都已被服务。在

更多信息请点击此处: https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_client_applications

相关问题 更多 >