将消息传递给Web Socket @onmessage事件

时间:2017-02-22 13:44:05

标签: javascript sockets websocket

我正在使用使用Web Socket的单页聊天应用程序。我的问题是:有没有办法将消息传递给事件@OnMessage上的函数?比如传递用户的昵称和照片。

我已经尝试了以下代码(添加了参数_nickname和_photo),但在运行之后我遇到了问题:

Server Tomcat v7.0 Server at localhost failed to start.
JavaScript中的

HTML

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

网络套接字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();
    }
}

我正在考虑一种从JavaScript传递消息,昵称和照片Json的方法,但我不知道如何将它放在Web套接字服务器的一侧。

我错过了什么吗? 请帮帮我。

由于

1 个答案:

答案 0 :(得分:2)

使用send方法,您只能发送字符串(请参阅docs)。但是,如果使用JSON.stringify,则可以发送JSON对象。然后在服务器中,你可以解码字符串,你将获得你的数据。

示例

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