大家好,
我创建了一个客户端和一个服务器来通过WebSocket进行通信。Twisted库用于WebSocket,最终我将从客户端向服务器发送GraphQL字符串。
然而,我得到一个错误,说明:
failing WebSocket opening handshake ('subprotocol selected by server (graphql-ws) not in subprotocol list requested by client ([])')
下面是我创建的示例代码:
服务器py公司
class MyServerProtocol(WebSocketServerProtocol):
def onConnect(self, request):
custom_header = {}
if request.headers['sec-websocket-key']:
custom_header['sec-websocket-protocol'] = 'graphql-ws'
return (None, custom_header)
def onOpen(self):
print "Websocket connection open"
def onMessage(self, payload, isBinary):
# Handle GraphQL query string here
try:
parsed_message = json.loads(payload)
except Exception as exp:
logger.error('Could not parse websocket payload', exc_info=True)
self.sendClose()
return 1
def onClose(self, wasClean, code, reason):
print("WebSocket connection closed: {0}".format(reason))
客户py公司
class MyClientProtocol(WebSocketClientProtocol):
def onConnect(self, response):
response.protocol = 'graphql-ws'
def onOpen(self):
print "Websocket connection open"
def onMessage(self, payload, isBinary):
if isBinary:
print("Binary message received: {0} bytes".format(len(payload)))
else:
print("Text message received: {0}".format(payload.decode('utf8')))
def onClose(self, wasClean, code, reason):
print("WebSocket connection closed: {0}".format(reason))
有人知道如何在客户端设置子程序列表吗?任何帮助都将不胜感激。
谢谢
布瑞恩