user6561572
user6561572

Reputation: 339

Passing more than the message to the Web Socket @onmessage event

I am working on a Single Page Chat Application that uses Web Socket. My question is :Is there a way to pass more than the message to the function on event @OnMessage? like passing also the user's nickname and photo.

I have tried the following code (added the parameters _nickname and _photo),but after I run it I get the problem :

Server Tomcat v7.0 Server at localhost failed to start.

JavaScript in HTML :

function sendMessage() {
    console.log("0000000");
    if (websocket != null) {
        websocket.send(msg,_nicknname,_photo);
    }
    msg = "";
}

Web Socket ChatEndPoint.java:

@OnMessage
public void deliverChatMessege(Session session, String msg ,String _nickname,String _photo) throws IOException{
    try {
        if (session.isOpen()) {
           //deliver message
           ChatUser user = chatUsers.get(session);
           doNotify(user.username, msg, _nickname,_photo, null);
        }
    } catch (IOException e) {
            session.close();
    }
}

I was thinking about a way to pass the message, nickname and photo Json-like from JavaScript but I don't know how to get it in the side of the web socket server.

Am I missing something ? Please help me.

Thanks

Upvotes: 2

Views: 653

Answers (1)

Deividas
Deividas

Reputation: 6507

With a send method you can only send strings (see docs). However, you can send a JSON object if you use JSON.stringify. Then in the server you can decode the string and you will have your data.

Example

function sendMessage() {
    console.log("0000000");
    if (websocket != null) {
        var data = {
            msg: msg,
            nickname: _nickname,
            photo: _photo
        };
        websocket.send(JSON.stringify(data));
    }
    msg = "";
}

Upvotes: 2

Related Questions