@Override
public WebSocket write(AtmosphereResponse r, String data) throws IOException {
firstWrite.set(true);
if (data == null) {
logger.error("Cannot write null value for {}", resource());
return this;
}
if (!isOpen()) throw new IOException("Connection remotely closed for " + uuid);
logger.trace("WebSocket.write() {}", data);
boolean transform = !filters.isEmpty() && r.getStatus() < 400;
if (binaryWrite) {
byte[] b = data.getBytes(resource().getResponse().getCharacterEncoding());
if (transform) {
b = transform(r, b, 0, b.length);
}
if (b != null) {
write(b, 0, b.length);
}
} else {
if (transform) {
byte[] b = data.getBytes(resource().getResponse().getCharacterEncoding());
data = new String(transform(r, b, 0, b.length), r.getCharacterEncoding());
}
if (data != null) {
write(data);
}
}
lastWrite = System.currentTimeMillis();
return this;
}