Skip to content

Commit a1237be

Browse files
author
Stephane Landelle
committed
Have a config parameter for websocket max buffer size, close AsyncHttpClient#658
1 parent fedda6a commit a1237be

File tree

3 files changed

+20
-16
lines changed

3 files changed

+20
-16
lines changed

src/main/java/com/ning/http/client/providers/netty/NettyAsyncHttpProviderConfig.java

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,8 @@ public Set<Map.Entry<String, Object>> propertiesSet() {
133133

134134
private NettyWebSocketFactory nettyWebSocketFactory = new DefaultNettyWebSocketFactory();
135135

136+
private int webSocketMaxBufferSize = 128000000;
137+
136138
public boolean isUseDeadLockChecker() {
137139
return useDeadLockChecker;
138140
}
@@ -237,15 +239,23 @@ public void setNettyWebSocketFactory(NettyWebSocketFactory nettyWebSocketFactory
237239
this.nettyWebSocketFactory = nettyWebSocketFactory;
238240
}
239241

242+
public int getWebSocketMaxBufferSize() {
243+
return webSocketMaxBufferSize;
244+
}
245+
246+
public void setWebSocketMaxBufferSize(int webSocketMaxBufferSize) {
247+
this.webSocketMaxBufferSize = webSocketMaxBufferSize;
248+
}
249+
240250
public static interface NettyWebSocketFactory {
241-
NettyWebSocket newNettyWebSocket(Channel channel);
251+
NettyWebSocket newNettyWebSocket(Channel channel, NettyAsyncHttpProviderConfig nettyConfig);
242252
}
243253

244254
public class DefaultNettyWebSocketFactory implements NettyWebSocketFactory {
245255

246256
@Override
247-
public NettyWebSocket newNettyWebSocket(Channel channel) {
248-
return new NettyWebSocket(channel);
257+
public NettyWebSocket newNettyWebSocket(Channel channel, NettyAsyncHttpProviderConfig nettyConfig) {
258+
return new NettyWebSocket(channel, nettyConfig);
249259
}
250260
}
251261
}

src/main/java/com/ning/http/client/providers/netty/handler/WebSocketProtocol.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ public WebSocketProtocol(ChannelManager channelManager,//
6262
private void invokeOnSucces(Channel channel, WebSocketUpgradeHandler h) {
6363
if (!h.touchSuccess()) {
6464
try {
65-
h.onSuccess(nettyConfig.getNettyWebSocketFactory().newNettyWebSocket(channel));
65+
h.onSuccess(nettyConfig.getNettyWebSocketFactory().newNettyWebSocket(channel, nettyConfig));
6666
} catch (Exception ex) {
6767
logger.warn("onSuccess unexpected exception", ex);
6868
}

src/main/java/com/ning/http/client/providers/netty/ws/NettyWebSocket.java

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import org.slf4j.LoggerFactory;
3030

3131
import com.ning.http.client.HttpResponseBodyPart;
32+
import com.ning.http.client.providers.netty.NettyAsyncHttpProviderConfig;
3233
import com.ning.http.client.providers.netty.response.NettyResponseBodyPart;
3334
import com.ning.http.client.websocket.WebSocket;
3435
import com.ning.http.client.websocket.WebSocketByteFragmentListener;
@@ -51,19 +52,20 @@ public class NettyWebSocket implements WebSocket {
5152

5253
protected final Channel channel;
5354
protected final Collection<WebSocketListener> listeners;
54-
protected int maxBufferSize = 128000000;
55+
protected final int maxBufferSize;
5556
private int bufferSize;
5657
private List<ChannelBuffer> _fragments;
5758
private volatile boolean interestedInByteMessages;
5859
private volatile boolean interestedInTextMessages;
5960

60-
public NettyWebSocket(Channel channel) {
61-
this(channel, new ConcurrentLinkedQueue<WebSocketListener>());
61+
public NettyWebSocket(Channel channel, NettyAsyncHttpProviderConfig nettyConfig) {
62+
this(channel, nettyConfig, new ConcurrentLinkedQueue<WebSocketListener>());
6263
}
6364

64-
public NettyWebSocket(Channel channel, Collection<WebSocketListener> listeners) {
65+
public NettyWebSocket(Channel channel, NettyAsyncHttpProviderConfig nettyConfig, Collection<WebSocketListener> listeners) {
6566
this.channel = channel;
6667
this.listeners = listeners;
68+
maxBufferSize = nettyConfig.getWebSocketMaxBufferSize();
6769
}
6870

6971
@Override
@@ -114,14 +116,6 @@ public WebSocket sendPong(byte[] payload) {
114116
return this;
115117
}
116118

117-
public int getMaxBufferSize() {
118-
return maxBufferSize;
119-
}
120-
121-
public void setMaxBufferSize(int maxBufferSize) {
122-
this.maxBufferSize = Math.max(maxBufferSize, 8192);
123-
}
124-
125119
@Override
126120
public boolean isOpen() {
127121
return channel.isOpen();

0 commit comments

Comments
 (0)