我正在開發擴展WebSocketBehavior以便將日誌數據發送到客戶端..已生成日誌處理程序,並在需要時觸發。Wicket 7 WebSocketBehavior
我無法理解如何將日誌條目推送到客戶端並更新控制檯面板。我已經知道onMessage方法是我需要用控制檯將WeSocketRequestHandler作爲參數以及我想發送的消息來重寫。我究竟如何讓onMessage正確啓動?這裏是我使用的代碼:
public class LogWebSocketBehavior extends WebSocketBehavior {
private static final long serialVersionUID = 1L;
Console console;
private Handler logHandler;
private Model model;
public LogWebSocketBehavior(Console console) {
super();
configureLogger();
this.console = console;
}
private void configureLogger() {
Logger l = Logger.getLogger(AppUtils.loggerName);
logHandler = getLoggerHandler();
l.addHandler(logHandler);
}
@Override
protected void onMessage(WebSocketRequestHandler handler, TextMessage message) {
console.info(handler, model.getObject());
}
private Handler getLoggerHandler() {
return new Handler() {
@Override
public void publish(LogRecord record) {
model.setObject(record);
}
@Override
public void flush() {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
@Override
public void close() throws SecurityException {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
};
}
private Collection<IWebSocketConnection> getConnectedClients() {
IWebSocketConnectionRegistry registry = new SimpleWebSocketConnectionRegistry();
return registry.getConnections(getApplication());
}
private void sendToAllConnectedClients(String message) {
Collection<IWebSocketConnection> wsConnections = getConnectedClients();
for (IWebSocketConnection wsConnection : wsConnections) {
if (wsConnection != null && wsConnection.isOpen()) {
try {
wsConnection.sendMessage("test");
} catch (IOException e) {
}
}
}
}
}
記錄儀的工作原理,因爲我希望它,提供所需的信息,但我怎麼也找不到真正火onMessage方法來更新我的控制檯。任何幫助表示讚賞...
我剛剛加入你在談論什麼。但是,onMessage方法不會觸發。 –
謝謝你,你讓我走在正確的道路上。這裏是基本上以我需要的方式運作的行爲: –
其實,我會將它附加到原始的.. –