Browse Source

JSONP encoding moved to Encoder

master
Nikita 13 years ago
parent
commit
6d10986ebd
  1. 18
      src/main/java/com/corundumstudio/socketio/SocketIOEncoder.java
  2. 2
      src/main/java/com/corundumstudio/socketio/SocketIOPipelineFactory.java
  3. 6
      src/main/java/com/corundumstudio/socketio/parser/Encoder.java

18
src/main/java/com/corundumstudio/socketio/SocketIOEncoder.java

@ -28,7 +28,6 @@ import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.atomic.AtomicInteger;
import org.codehaus.jackson.map.ObjectMapper;
import org.jboss.netty.buffer.ChannelBuffer;
import org.jboss.netty.buffer.ChannelBuffers;
import org.jboss.netty.channel.Channel;
@ -92,14 +91,10 @@ public class SocketIOEncoder extends SimpleChannelDownstreamHandler implements M
private final Logger log = LoggerFactory.getLogger(getClass());
private ObjectMapper objectMapper;
private Encoder encoder;
private final ConcurrentMap<UUID, XHRClientEntry> sessionId2ActiveChannelId = new ConcurrentHashMap<UUID, XHRClientEntry>();
private final Encoder encoder;
private ConcurrentMap<UUID, XHRClientEntry> sessionId2ActiveChannelId = new ConcurrentHashMap<UUID, XHRClientEntry>();
public SocketIOEncoder(ObjectMapper objectMapper, Encoder encoder) {
super();
this.objectMapper = objectMapper;
public SocketIOEncoder(Encoder encoder) {
this.encoder = encoder;
}
@ -185,12 +180,13 @@ public class SocketIOEncoder extends SimpleChannelDownstreamHandler implements M
@Override
public void handle(AuthorizeMessage authMsg, Channel channel) throws IOException {
ChannelBuffer msg;
String message = authMsg.getMsg();
if (authMsg.getJsonpParam() != null) {
message = "io.j[" + authMsg.getJsonpParam() + "]("
+ objectMapper.writeValueAsString(message) + ");";
msg = encoder.encodeJsonP(authMsg.getJsonpParam(), message);
} else {
msg = ChannelBuffers.wrappedBuffer(message.getBytes());
}
ChannelBuffer msg = ChannelBuffers.wrappedBuffer(message.getBytes());
sendMessage(authMsg.getOrigin(), authMsg.getSessionId(), channel, msg);
}

2
src/main/java/com/corundumstudio/socketio/SocketIOPipelineFactory.java

@ -78,7 +78,7 @@ public class SocketIOPipelineFactory implements ChannelPipelineFactory, Disconne
authorizeHandler = new AuthorizeHandler(connectPath, scheduler, configuration, namespacesHub);
xhrPollingTransport = new XHRPollingTransport(connectPath, ackManager, this, scheduler, authorizeHandler, configuration);
webSocketTransport = new WebSocketTransport(connectPath, ackManager, this, authorizeHandler, heartbeatHandler);
socketIOEncoder = new SocketIOEncoder(objectMapper, encoder);
socketIOEncoder = new SocketIOEncoder(encoder);
}
public Iterable<SocketIOClient> getAllClients() {

6
src/main/java/com/corundumstudio/socketio/parser/Encoder.java

@ -33,6 +33,12 @@ public class Encoder {
this.objectMapper = objectMapper;
}
public ChannelBuffer encodeJsonP(String param, String msg) throws IOException {
String message = "io.j[" + param + "]("
+ objectMapper.writeValueAsString(msg) + ");";
return ChannelBuffers.wrappedBuffer(message.getBytes());
}
public ChannelBuffer encodePacket(Packet packet) throws IOException {
ChannelBuffer buffer = ChannelBuffers.dynamicBuffer();
ChannelBufferOutputStream out = new ChannelBufferOutputStream(buffer);

Loading…
Cancel
Save