mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 05:07:41 +00:00
Add ping to websockets API (#4592)
This commit is contained in:
parent
914a868fbd
commit
5d2b7a6e0b
@ -29,18 +29,20 @@ ERR_INVALID_FORMAT = 2
|
||||
ERR_NOT_FOUND = 3
|
||||
|
||||
TYPE_AUTH = 'auth'
|
||||
TYPE_AUTH_INVALID = 'auth_invalid'
|
||||
TYPE_AUTH_OK = 'auth_ok'
|
||||
TYPE_AUTH_REQUIRED = 'auth_required'
|
||||
TYPE_AUTH_INVALID = 'auth_invalid'
|
||||
TYPE_EVENT = 'event'
|
||||
TYPE_SUBSCRIBE_EVENTS = 'subscribe_events'
|
||||
TYPE_UNSUBSCRIBE_EVENTS = 'unsubscribe_events'
|
||||
TYPE_CALL_SERVICE = 'call_service'
|
||||
TYPE_GET_STATES = 'get_states'
|
||||
TYPE_GET_SERVICES = 'get_services'
|
||||
TYPE_EVENT = 'event'
|
||||
TYPE_GET_CONFIG = 'get_config'
|
||||
TYPE_GET_PANELS = 'get_panels'
|
||||
TYPE_GET_SERVICES = 'get_services'
|
||||
TYPE_GET_STATES = 'get_states'
|
||||
TYPE_PING = 'ping'
|
||||
TYPE_PONG = 'pong'
|
||||
TYPE_RESULT = 'result'
|
||||
TYPE_SUBSCRIBE_EVENTS = 'subscribe_events'
|
||||
TYPE_UNSUBSCRIBE_EVENTS = 'unsubscribe_events'
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
@ -91,6 +93,11 @@ GET_PANELS_MESSAGE_SCHEMA = vol.Schema({
|
||||
vol.Required('type'): TYPE_GET_PANELS,
|
||||
})
|
||||
|
||||
PING_MESSAGE_SCHEMA = vol.Schema({
|
||||
vol.Required('id'): cv.positive_int,
|
||||
vol.Required('type'): TYPE_PING,
|
||||
})
|
||||
|
||||
BASE_COMMAND_MESSAGE_SCHEMA = vol.Schema({
|
||||
vol.Required('id'): cv.positive_int,
|
||||
vol.Required('type'): vol.Any(TYPE_CALL_SERVICE,
|
||||
@ -99,7 +106,8 @@ BASE_COMMAND_MESSAGE_SCHEMA = vol.Schema({
|
||||
TYPE_GET_STATES,
|
||||
TYPE_GET_SERVICES,
|
||||
TYPE_GET_CONFIG,
|
||||
TYPE_GET_PANELS)
|
||||
TYPE_GET_PANELS,
|
||||
TYPE_PING)
|
||||
}, extra=vol.ALLOW_EXTRA)
|
||||
|
||||
|
||||
@ -149,6 +157,14 @@ def error_message(iden, code, message):
|
||||
}
|
||||
|
||||
|
||||
def pong_message(iden):
|
||||
"""Return a pong message."""
|
||||
return {
|
||||
'id': iden,
|
||||
'type': TYPE_PONG,
|
||||
}
|
||||
|
||||
|
||||
def result_message(iden, result=None):
|
||||
"""Return a success result message."""
|
||||
return {
|
||||
@ -399,3 +415,7 @@ class ActiveConnection:
|
||||
|
||||
self.send_message(result_message(
|
||||
msg['id'], self.hass.data[frontend.DATA_PANELS]))
|
||||
|
||||
def handle_ping(self, msg):
|
||||
"""Handle ping command."""
|
||||
self.send_message(pong_message(msg['id']))
|
||||
|
@ -283,3 +283,16 @@ def test_get_panels(hass, websocket_client):
|
||||
assert msg['type'] == wapi.TYPE_RESULT
|
||||
assert msg['success']
|
||||
assert msg['result'] == hass.data[frontend.DATA_PANELS]
|
||||
|
||||
|
||||
@asyncio.coroutine
|
||||
def test_ping(websocket_client):
|
||||
""" Test get_panels command."""
|
||||
websocket_client.send_json({
|
||||
'id': 5,
|
||||
'type': wapi.TYPE_PING,
|
||||
})
|
||||
|
||||
msg = yield from websocket_client.receive_json()
|
||||
assert msg['id'] == 5
|
||||
assert msg['type'] == wapi.TYPE_PONG
|
||||
|
Loading…
x
Reference in New Issue
Block a user