This commit is contained in:
Redkale
2018-05-30 18:23:12 +08:00
parent c73ebf88db
commit 6bb2e152a5

View File

@@ -41,7 +41,7 @@ class WebSocketRunner implements Runnable {
private final AtomicBoolean writing = new AtomicBoolean(); private final AtomicBoolean writing = new AtomicBoolean();
private final BlockingQueue<QueueEntry> queue = new ArrayBlockingQueue(1024); private final BlockingQueue<QueueEntry> queue = new ArrayBlockingQueue(256);
private final BiConsumer<WebSocket, Object> restMessageConsumer; //主要供RestWebSocket使用 private final BiConsumer<WebSocket, Object> restMessageConsumer; //主要供RestWebSocket使用
@@ -219,6 +219,7 @@ class WebSocketRunner implements Runnable {
boolean debug = context.getLogger().isLoggable(Level.FINEST); boolean debug = context.getLogger().isLoggable(Level.FINEST);
//System.out.println("推送消息"); //System.out.println("推送消息");
final CompletableFuture<Integer> futureResult = new CompletableFuture<>(); final CompletableFuture<Integer> futureResult = new CompletableFuture<>();
try {
synchronized (writing) { synchronized (writing) {
if (writing.getAndSet(true)) { if (writing.getAndSet(true)) {
queue.add(new QueueEntry(futureResult, packet)); queue.add(new QueueEntry(futureResult, packet));
@@ -227,7 +228,7 @@ class WebSocketRunner implements Runnable {
} }
ByteBuffer[] buffers = packet.sendBuffers != null ? packet.duplicateSendBuffers() : packet.encode(this.context.getBufferSupplier(), this.context.getBufferConsumer(), webSocket._engine.cryptor); ByteBuffer[] buffers = packet.sendBuffers != null ? packet.duplicateSendBuffers() : packet.encode(this.context.getBufferSupplier(), this.context.getBufferConsumer(), webSocket._engine.cryptor);
//if (debug) context.getLogger().log(Level.FINEST, "wsrunner.sending websocket message: " + packet); //if (debug) context.getLogger().log(Level.FINEST, "wsrunner.sending websocket message: " + packet);
try {
this.lastSendTime = System.currentTimeMillis(); this.lastSendTime = System.currentTimeMillis();
channel.write(buffers, buffers, new CompletionHandler<Integer, ByteBuffer[]>() { channel.write(buffers, buffers, new CompletionHandler<Integer, ByteBuffer[]>() {