private WebSocketBehavior newWsBehavior()

in openmeetings-web/src/main/java/org/apache/openmeetings/web/common/OmWebSocketPanel.java [85:161]


	private WebSocketBehavior newWsBehavior() {
		return new WebSocketBehavior() {
			private static final long serialVersionUID = 1L;

			@Override
			public void renderHead(Component component, IHeaderResponse response) {
				super.renderHead(component, response);
				response.render(JavaScriptHeaderItem.forScript(
						String.format("Wicket.Event.subscribe(Wicket.Event.Topic.WebSocket.Opened, function() {Wicket.WebSocket.send('%s');});",CONNECTED_MSG)
						, "ws-connected-script"));
			}

			@Override
			protected void onConnect(ConnectedMessage message) {
				super.onConnect(message);
				OmWebSocketPanel.this.onConnect(message);
			}

			@Override
			protected void onMessage(WebSocketRequestHandler handler, TextMessage msg) {
				if (CONNECTED_MSG.equals(msg.getText())) {
					if (connected.compareAndSet(false, true)) {
						OmWebSocketPanel.this.onConnect(handler);
					}
				} else {
					final JSONObject m;
					try {
						m = new JSONObject(msg.getText());
						switch(m.optString("type", "")) {
							case KURENTO_TYPE:
								kHandler.onMessage(getWsClient(), m);
								break;
							case "mic":
								micMessage(m);
								break;
							case "ping":
								log.trace("Sending WebSocket PING");
								handler.appendJavaScript("OmUtil.ping();");
								WebSocketHelper.sendClient(getWsClient(), new byte[]{getUserId() == null ? 0 : getUserId().byteValue()});
								break;
							default:
								OmWebSocketPanel.this.onMessage(handler, m);
						}
					} catch (Exception e) {
						log.error("Error while processing incoming message", e);
					}
				}
			}

			@Override
			protected void onAbort(AbortedMessage msg) {
				closeHandler(msg);
			}

			@Override
			protected void onClose(ClosedMessage msg) {
				closeHandler(msg);
			}

			@Override
			protected void onError(WebSocketRequestHandler handler, ErrorMessage msg) {
				closeHandler(msg);
			}

			private void micMessage(final JSONObject m) {
				IWsClient curClient = getWsClient();
				if (!(curClient instanceof Client)) {
					return;
				}
				Client c = (Client)curClient;
				if (c.getRoomId() == null) {
					return;
				}
				WebSocketHelper.sendRoomOthers(c.getRoomId(), c.getUid(), m.put("uid", c.getUid()));
			}
		};
	}