This commit is contained in:
地平线
2015-06-23 13:49:30 +08:00
parent 3253d61121
commit 37de3bd694
2 changed files with 5 additions and 9 deletions

View File

@@ -8,7 +8,6 @@ package com.wentch.redkale.net.http;
import com.wentch.redkale.net.AsyncConnection; import com.wentch.redkale.net.AsyncConnection;
import com.wentch.redkale.net.Context; import com.wentch.redkale.net.Context;
import com.wentch.redkale.net.http.WebSocketPacket.PacketType; import com.wentch.redkale.net.http.WebSocketPacket.PacketType;
import com.wentch.redkale.service.*;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.nio.channels.*; import java.nio.channels.*;
import java.security.SecureRandom; import java.security.SecureRandom;
@@ -30,8 +29,6 @@ public class WebSocketRunner implements Runnable {
protected final Context context; protected final Context context;
protected final WebSocketNodeService nodeService;
private ByteBuffer readBuffer; private ByteBuffer readBuffer;
private ByteBuffer writeBuffer; private ByteBuffer writeBuffer;
@@ -44,9 +41,8 @@ public class WebSocketRunner implements Runnable {
private final BlockingQueue<byte[]> queue = new ArrayBlockingQueue(1024); private final BlockingQueue<byte[]> queue = new ArrayBlockingQueue(1024);
public WebSocketRunner(Context context, WebSocketNodeService nodeService, WebSocket webSocket, AsyncConnection channel) { public WebSocketRunner(Context context, WebSocket webSocket, AsyncConnection channel) {
this.context = context; this.context = context;
this.nodeService = nodeService;
this.engine = webSocket.engine; this.engine = webSocket.engine;
this.webSocket = webSocket; this.webSocket = webSocket;
this.channel = channel; this.channel = channel;
@@ -61,7 +57,7 @@ public class WebSocketRunner implements Runnable {
public void run() { public void run() {
final boolean debug = this.coder.debugable; final boolean debug = this.coder.debugable;
try { try {
if (nodeService != null) nodeService.connectSelf(webSocket.groupid); if (webSocket.nodeService != null) webSocket.nodeService.connectSelf(webSocket.groupid);
webSocket.onConnected(); webSocket.onConnected();
channel.setReadTimeoutSecond(300); //读取超时5分钟 channel.setReadTimeoutSecond(300); //读取超时5分钟
if (channel.isOpen()) { if (channel.isOpen()) {
@@ -181,9 +177,9 @@ public class WebSocketRunner implements Runnable {
readBuffer = null; readBuffer = null;
writeBuffer = null; writeBuffer = null;
engine.remove(webSocket); engine.remove(webSocket);
if (nodeService != null) { if (webSocket.nodeService != null) {
WebSocketGroup group = webSocket.getWebSocketGroup(); WebSocketGroup group = webSocket.getWebSocketGroup();
if (group == null || group.isEmpty()) nodeService.disconnectSelf(webSocket.groupid); if (group == null || group.isEmpty()) webSocket.nodeService.disconnectSelf(webSocket.groupid);
} }
webSocket.onClose(0, null); webSocket.onClose(0, null);
} }

View File

@@ -103,7 +103,7 @@ public abstract class WebSocketServlet extends HttpServlet {
} }
webSocket.groupid = groupid; webSocket.groupid = groupid;
engine.add(webSocket); engine.add(webSocket);
context.submit(new WebSocketRunner(context, nodeService, webSocket, response.removeChannel())); context.submit(new WebSocketRunner(context, webSocket, response.removeChannel()));
response.finish(true); response.finish(true);
} }