Browse Source

XHRPollingTransport small refactoring

master
Nikita 13 years ago
parent
commit
9dfaa7e008
  1. 2
      README.md
  2. 1
      src/main/java/com/corundumstudio/socketio/parser/Decoder.java
  3. 24
      src/main/java/com/corundumstudio/socketio/transport/XHRPollingTransport.java

2
README.md

@ -6,7 +6,7 @@ Licensed under the MIT license.
### Features
* Supports 0.7+ version of [Socket.IO-client](https://github.com/LearnBoost/socket.io-client) up to latest - 0.9.5
* Supports 0.8+ version of [Socket.IO-client](https://github.com/LearnBoost/socket.io-client) up to latest - 0.9.5
* Supports xhr-polling transport
#Usage example

1
src/main/java/com/corundumstudio/socketio/parser/Decoder.java

@ -12,7 +12,6 @@ package com.corundumstudio.socketio.parser;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

24
src/main/java/com/corundumstudio/socketio/transport/XHRPollingTransport.java

@ -79,7 +79,7 @@ public class XHRPollingTransport implements SocketIOTransport {
}
}
private void onPost(QueryStringDecoder queryDecoder, Channel channel, HttpRequest req) {
private void onPost(QueryStringDecoder queryDecoder, Channel channel, HttpRequest req) throws IOException {
String path = queryDecoder.getPath();
if (!path.startsWith(pollingPath)) {
log.warn("Wrong POST request path: {}, from ip: {}. Channel closed!",
@ -100,24 +100,13 @@ public class XHRPollingTransport implements SocketIOTransport {
String content = req.getContent().toString(CharsetUtil.UTF_8);
log.trace("Request content: {}", content);
try {
List<Packet> packets = decoder.decodePayload(content);
for (Packet packet : packets) {
packetListener.onPacket(packet, client);
}
} catch (IOException e) {
}
HttpHeaders.setKeepAlive(req, false);
//send a response that allows for cross domain access
HttpResponse resp = new DefaultHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.OK);
String origin = req.getHeader(HttpHeaders.Names.ORIGIN);
if (origin != null) {
resp.addHeader("Access-Control-Allow-Origin", origin);
resp.addHeader("Access-Control-Allow-Credentials", "true");
}
sendHttpResponse(channel, req, resp);
sendHttpResponse(channel, req);
} else {
log.warn("Wrong POST request path: {}, from ip: {}. Channel closed!",
new Object[] {path, channel.getRemoteAddress()});
@ -175,7 +164,14 @@ public class XHRPollingTransport implements SocketIOTransport {
client.doReconnect(channel, req);
}
private void sendHttpResponse(Channel channel, HttpRequest req, HttpResponse res) {
private void sendHttpResponse(Channel channel, HttpRequest req) {
HttpResponse res = new DefaultHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.OK);
String origin = req.getHeader(HttpHeaders.Names.ORIGIN);
if (origin != null) {
res.addHeader("Access-Control-Allow-Origin", origin);
res.addHeader("Access-Control-Allow-Credentials", "true");
}
if (res.getStatus().getCode() != 200) {
res.setContent(
ChannelBuffers.copiedBuffer(

Loading…
Cancel
Save