在尝试连接到Coinfloor的websocket API之后,很难获得响应,甚至是令人放心的错误响应。文档:https://github.com/coinfloor/API/blob/master/WEBSOCKET-README.md
'命令,回复和通知在文本中遍历WebSocket 具有JSON格式的有效负载的帧。'
这是我的尝试:
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server = 'api.coinfloor.co.uk'
port = 443
server_ip = socket.gethostbyname('api.coinfloor.co.uk')
payload = '{"method": "WatchTicker","base": int("0xF800", 16),"counter":int("0xFA20",16),"watch":True}'
s.connect((server_ip, port))
s.sendall(payload.encode('utf-8'))
result = s.recv(4096)
print(result)
它只是返回:
b''
即。一个空的字节串。
答案 0 :(得分:2)
因为套接字和WebSocket是完全不同的东西。 AF_INET / SOCK_STREAM套接字是一种使用TCP与远程对等方通信的工具。另一方面,WebSocket是一个二进制协议
在TCP或TLS的顶部工作。
必须在数据交换之前执行HTTP握手。
由于WebSocket是一个相当复杂的协议(see the standard),因此最好的做法是找到一个WebSocket库并使用它而不是尝试从TCP开始实现协议。