2017-02-22 8 views
2

Я работаю над одним чат-приложением, использующим Web Socket. Мой вопрос: есть ли способ передать больше, чем сообщение функции на событие @OnMessage? например, прохождение псевдонима пользователя и фотографии.Передача больше, чем сообщение для веб-узла Socket @onmessage event

Я попытался следующий код (добавлены параметры _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 = ""; 
} 

Web гнездо 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(); 
    } 
} 

Я думал о способе передать сообщение, псевдоним и фотографию Json-like из JavaScript, но я не знаю, как получить его в стороне веб-сервера сокетов.

Я что-то упустил? Пожалуйста, помогите мне.

Благодаря

ответ

2

С методом send вы можете посылать только строки (см docs). Однако вы можете отправить объект JSON, если используете JSON.stringify. Затем на сервере вы можете декодировать строку, и у вас будут свои данные.

Пример

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

@eividas Karžinauskas спасибо за ответ, но не могли бы вы дать мне небольшой пример, чтобы проиллюстрировать ситуацию? – user6561572

+0

@shery Я изменил ваш пример javascript для иллюстрации. –

+0

спасибо, но как я могу получить их в deliverChatMessege? как: ..String MyData ..? – user6561572

Смежные вопросы