function send(message, options) {
return new Promise(function(resolve, reject) {
switch (ws.readyState) {
case WebSocket.OPENING:
// This should never happen.
log.warn('Unable to send to OPENING client "%s"', id)
break
case WebSocket.OPEN:
// This is what SHOULD happen.
ws.send(message, options, function(err) {
return err ? reject(err) : resolve()
})
break
case WebSocket.CLOSING:
// Ok, a 'close' event should remove the client from the set
// soon.
log.debug('Websocket CLOSING: "%s"', id)
break
case WebSocket.CLOSED:
// This should never happen.
webdriverAgent.removeListener('frame', emitFrame)
webdriverAgent.removeListener('orientation', emitOrientation)
webdriverAgent.removeListener('actionId', emitActionId)
log.warn('Unable to send to CLOSED client "%s"', id)
break
}
})
}