Skip to content

Commit 941c913

Browse files
committed
Handle the PING frames
Whenever we receive a PING frame, we have to reply with a PONG frame with a payload identical to the one present in the received PING. we reuse the function send_text() to send the pong frame but add the opcode to be sent as an argument. This opcode defaults to OPCODE_TEXT so we do not break the compatibility. fixes Pithikos#5 Signed-off-by: Olivier Gayot <[email protected]>
1 parent dc9d913 commit 941c913

File tree

1 file changed

+8
-5
lines changed

1 file changed

+8
-5
lines changed

websocket_server/websocket_server.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ def _message_received_(self, handler, msg):
103103
self.message_received(self.handler_to_client(handler), self, msg)
104104

105105
def _ping_received_(self, handler, msg):
106-
pass
106+
handler.send_pong(msg)
107107

108108
def _pong_received_(self, handler, msg):
109109
pass
@@ -219,7 +219,10 @@ def read_next_message(self):
219219
def send_message(self, message):
220220
self.send_text(message)
221221

222-
def send_text(self, message):
222+
def send_pong(self, message):
223+
self.send_text(message, OPCODE_PONG)
224+
225+
def send_text(self, message, opcode=OPCODE_TEXT):
223226
'''
224227
NOTES
225228
Fragmented(=continuation) messages are not being used since their usage
@@ -244,18 +247,18 @@ def send_text(self, message):
244247

245248
# Normal payload
246249
if payload_length <= 125:
247-
header.append(FIN | OPCODE_TEXT)
250+
header.append(FIN | opcode)
248251
header.append(payload_length)
249252

250253
# Extended payload
251254
elif payload_length >= 126 and payload_length <= 65535:
252-
header.append(FIN | OPCODE_TEXT)
255+
header.append(FIN | opcode)
253256
header.append(PAYLOAD_LEN_EXT16)
254257
header.extend(struct.pack(">H", payload_length))
255258

256259
# Huge extended payload
257260
elif payload_length < 18446744073709551616:
258-
header.append(FIN | OPCODE_TEXT)
261+
header.append(FIN | opcode)
259262
header.append(PAYLOAD_LEN_EXT64)
260263
header.extend(struct.pack(">Q", payload_length))
261264

0 commit comments

Comments
 (0)