在浏览器上使用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),然后通过手动发送头来启动握手。 但是这在浏览器中是不可能的,因为我无法打开原始套接字。 至少,这是我目前的理解。在
摘要,是否有一种方法可以先在客户端和服务器之间建立连接,然后随意启动握手?在
如果在javascript中使用WebSockets api。在
有一个
onopen
事件,它在连接准备就绪时被激发。 你可以在里面放一个setTimeout
来延迟发送第一个数据。在我认为你不能推迟握手本身。在
可能尝试将
new Websocket
放在setTimeout
中,以确保在尝试启动连接之前所有文件都已被服务。在更多信息请点击此处: https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_client_applications
相关问题 更多 >
编程相关推荐