2 Replies Latest reply on Jun 3, 2011 2:16 PM by pottingshed

    Sending message from server to client

    blizzy

      Hi all,

       

      I'm currently trying to use ErraiBus in a GWT application. What I'm trying to do is to send a message from the server to the client without the client requesting anything. I couldn't find out how to do that, though. In the examples in the user guide it looks like the server always reacts to some client message, which is not what I need.

       

      On second note, to send an unsolicited message, I think I need a reference to some ErraiBus component. I understand that ErraiBus uses Guice to wire its components, but how to get some object or service that I can use to send my message to the client?

       

      Any help is greatly appreciated. Perhaps the user guide could be modified to include a similar example.

       

      Greetings,

       

      Maik

        • 1. Re: Sending message from server to client
          heiko.braun

          Just send it using a bus reference:

           

           

           MessageBuilder.createMessage()
                              .toSubject("HelloWorldClient")             
                              .signalling()                               
                              .with("text", "Hi There")                  
                              .noErrorHandling()                         
                              .sendNowWith(bus);
          

           

           

          You can do that in any business method of your service implementation,

          The bus reference get's injected:

           

           

          @Inject                                         
          public HelloWorldService(MessageBus bus) {
                  this.bus = bus;
          }
          
          • 2. Re: Sending message from server to client
            pottingshed

            Hi,

            I'm trying to do the same thing - notify client of successful authentication, without an initial client request. However, when I issue the following after authentication, I get the following exception:

            Exception in thread "Dispatch Worker Thread" java.lang.RuntimeException: cannot have a conversation.  the incoming message has not session data associated with it.

            Presumably this is because there is no associated session. This is what I use to make the call:

                    RequestDispatcher erraiDispatcher = GneLifecycleListener.getSpringContext().getBean("erraiRequestDispatcher",

                            RequestDispatcher.class);

                   

                    MessageBuilder.createMessage()

                    .toSubject("CommandFacadeMsg")

                    .signalling()

                    .with("gneCommand", GneCommand.SUCCESSFUL_AUTHENTICATION.toString()) // Use string, not enum

                    .with("gneUserVo", gneUserVo)

                    .noErrorHandling()

                    .sendNowWith(erraiDispatcher); 

             

            Where am I going wrong?

             

            Thanks,

            Errai Newbie.