WebSocket method 'onMessage()' not execute

291 views
Skip to first unread message

al.tol...@gmail.com

unread,
Feb 11, 2018, 12:17:46 PM2/11/18
to ninja-framework
Hello!
I have test example where I use websockets.

Server execute method 'onOpen()' when, client connect to server, but where client send message to server method 'onMessage(Object obj)' doesn`t execute.

What wrong?

My test example:

Thanks!

al.tol...@gmail.com

unread,
Feb 11, 2018, 1:14:09 PM2/11/18
to ninja-framework
ChatWebSocket.java

package controllers.ws;

import javax.websocket.CloseReason;
import javax.websocket.Endpoint;
import javax.websocket.EndpointConfig;
import javax.websocket.MessageHandler;
import javax.websocket.Session;
import ninja.Context;
import ninja.Result;
import ninja.Results;
import ninja.websockets.WebSocketHandshake;

public class ChatWebSocket extends Endpoint implements MessageHandler.Whole {


    public Result handshake(Context context, WebSocketHandshake handshake) {
       try {
           System.out.println("controllers.ws.ChatWebSocket.handshake()");
           return Results.webSocketContinue();
       } catch (Exception ex) {
           ex.printStackTrace();
           return Results.webSocketContinue();
       }
   }

    @Override
   public void onOpen(Session session, EndpointConfig arg1) {
       System.out.println("controllers.ws.ChatWebSocket.onOpen()");
   }

    @Override
   public void onMessage(Object message) {
       System.out.println("controllers.ws.ChatWebSocket.onMessage()");
   }

    @Override
   public void onClose(Session session, CloseReason closeReason) {
       System.out.println("controllers.ws.ChatWebSocket.onClose()");
       super.onClose(session, closeReason);
   }

    @Override
   public void onError(Session session, Throwable thr) {
       System.out.println("controllers.ws.ChatWebSocket.onError()");
       super.onError(session, thr);
   }

}

index.html:
<!DOCTYPE html>
<html>
   <head>
       <meta charset="UTF-8">
       <title>WebSocket Client</title>
       <script type="text/javascript">
           var wsocket;
           function connect() {
               wsocket = new WebSocket("ws://localhost:8080/echo");
               wsocket.onmessage = onMessage;
               wsocket.onOpen = onOpen;
           }
           function onOpen() {
               wsocket.send("TEST");
           }
           function onMessage(evt) {
               document.getElementById("rate").innerHTML = evt.data;
           }
           window.addEventListener("load", connect, false);
       </script>
   </head>
   <body>
       <table>
           <tr>
               <td> <label id="rateLbl">Current Rate:</label></td>
               <td> <label id="rate">0</label></td>
           </tr>
       </table>
   </body>
</html>


al.tol...@gmail.com

unread,
Feb 14, 2018, 2:38:44 AM2/14/18
to ninja-framework
Problem solved.
After open connection need add messageHandler to Session like this:

session.addMessageHandler(this);

Reply all
Reply to author
Forward
0 new messages