Одна сессия, но разные ID. WebSocket Java & JavaScript

246
15 октября 2017, 21:06

Пишу чат элементарный. Запуская сервер - вижу, что количество сессий всегда равняется "1", сколько бы вкладок или браузеров я бы не открыл. Но при этом, каждая новая вкладка имеет свой ID при open().

@OnOpen
public void open(final Session session, @PathParam("room") final String room) {
    session.getUserProperties().put("room", room);
    System.out.println("Create new SESSION: "+ session.getId());
}
@OnMessage
public void onMessage(final Session session, final ChatMessage chatMessage) {
    try {
        for (Session s : session.getOpenSessions()) {
            if (s.isOpen()) {
                s.getBasicRemote().sendObject(chatMessage);
                System.out.println("Connect! "+ session.getOpenSessions().size()); // always size==1
            }
        }
    } catch (IOException | EncodeException e) {
        e.printStackTrace();
        System.out.println(e.getMessage());
    }
}

Что упускаю? Сообщение идёт в формате JSON, там всё отлично, сообщение приходит серверу, а с сервера к клиенту. Но только одному! Это из-за того я подозреваю, что всегда ТОЛЬКО 1 сессия почему-то...

    var wsocket;
    var serviceLocation = "ws://localhost:8080/WebApp/chat/";
    var $nickName;
    var $message;
    var $chatWindow;
    function onMessageReceived(evt) {
        var msg = JSON.parse(evt.data); // native API
        var $messageLine = $('<tr><td>' + msg.sender
            + '</td><td>' + msg.message
            + '</td></tr>');
        $chatWindow.append($messageLine);
    }
    function sendMessage() {
        var msg = '{"message":"' + $message.val() + '", "sender":"'
            + $nickName.val() + '"}';
        wsocket.send(msg);
        $message.val('').focus();
    }
    function connectToChatserver() {
        wsocket = new WebSocket(serviceLocation);
        wsocket.onmessage = onMessageReceived;
    }
    $(document).ready(function () {
        $nickName = $('#nickname');
        $message = $('#message');
        $chatWindow = $('#response');
        $('#do-chat').submit(function (evt) {
            evt.preventDefault();
            connectToChatserver();
            sendMessage()
        });
READ ALSO
Метод или операция не реализована

Метод или операция не реализована

Что значит "Метод или операция не реализована"? У меня в этом коде ошибка:

251
Could not connect to the debugger

Could not connect to the debugger

Во время начала выполнения программы появляется окно

206
WPF c# Textblock Mouse Over Backgound Color in code

WPF c# Textblock Mouse Over Backgound Color in code

Как задать background color у textblock в коде при наведение мышки на него

268