diff --git a/rosbridge_server/src/rosbridge_server/websocket_handler.py b/rosbridge_server/src/rosbridge_server/websocket_handler.py index 31194cb63..f0fb5395d 100755 --- a/rosbridge_server/src/rosbridge_server/websocket_handler.py +++ b/rosbridge_server/src/rosbridge_server/websocket_handler.py @@ -167,7 +167,14 @@ def prewrite_message(self, message, binary): # Use a try block because the log decorator doesn't cooperate with @coroutine. try: with self._write_lock: - yield self.write_message(message, binary) + future = self.write_message(message, binary) + + # When closing, self.write_message() return None even if it's an undocument output. + # Consider it as WebSocketClosedError + if future is None: + raise WebSocketClosedError + + yield future except WebSocketClosedError: rospy.logwarn('WebSocketClosedError: Tried to write to a closed websocket') raise