def push_to_client(self, uuid, message): ''' Push a message to a particular client via a STOMP server :Parameters: - uuid: The unique client identifier ID - message: A StompMessage object ''' # TODO add a listener to connection to get confirmation of delivery? # TODO connection pool strategy # stomp.py docs: http://code.google.com/p/stomppy LogComponent.debug([ 'OrbitedStompComponent.push_to_client', self.stomp_hostname, self.stomp_port, uuid, message ]) conn = stomp.Connection([(self.stomp_hostname, self.stomp_port)]) conn.start() conn.connect() conn.send(message=message.contents, destination=uuid, type='textMessage', ack='auto') conn.disconnect( ) # or conn.stop() - different behavior if there are listeners
def thywill(request): ''' Deliver the basic thywill framing page, immediately prior to bootstrap. :Parameters: - request: HttpRequest :Return: HttpResponse ''' uuid = __ensure_uuid(request) config = ClientInterfaceComponent.factory().create_client_configuration(uuid) context = Context({ 'config': config.to_dict(), 'config_json': config.to_json(True), }) LogComponent.debug(['django.requests.thywill', 'initial client page load', uuid, config.to_dict()]) return HttpResponse(get_template('thywill.html').render(context))
def push_to_client(self, uuid, message): """ Push a message to a particular client via a STOMP server :Parameters: - uuid: The unique client identifier ID - message: A StompMessage object """ # TODO add a listener to connection to get confirmation of delivery? # TODO connection pool strategy # stomp.py docs: http://code.google.com/p/stomppy LogComponent.debug( ["OrbitedStompComponent.push_to_client", self.stomp_hostname, self.stomp_port, uuid, message] ) conn = stomp.Connection([(self.stomp_hostname, self.stomp_port)]) conn.start() conn.connect() conn.send(message=message.contents, destination=uuid, type="textMessage", ack="auto") conn.disconnect() # or conn.stop() - different behavior if there are listeners
def send(request): ''' AJAX response: Send a client-originated message into the currently active application. :Parameters: - request: HttpRequest :Return: HttpResponse ''' uuid = __ensure_uuid(request) if 'message' in request.POST: message = request.POST['message'] LogComponent.debug(['django.requests.send', 'AJAX message from client', uuid, message]) ApplicationInterfaceComponent.factory().client_message_received(uuid, message) else: LogComponent.debug(['django.requests.send', 'Invalid POST request', uuid, request.POST]) # TODO return confirmation of some sort? return HttpResponse()
def client_message_received(self, uuid, raw_message): ''' Notify the application of a client message received by the receive component ''' LogComponent.debug(['LocalPythonComponent.client_message_received', uuid, raw_message]) self.app_interface_module.message_from_client(uuid, raw_message);
def send_message_to_client(self, uuid, raw_message): ''' Send a message to a specific client. ''' LogComponent.debug(['LocalPythonComponent.send_message_to_client', uuid, raw_message]) PushComponent.factory().push_raw_message_to_client(uuid, raw_message)