Navigation Menu

Skip to content

Commit

Permalink
Incorporate casualjim's patches for scalatra-socketio.
Browse files Browse the repository at this point in the history
  • Loading branch information
rossabaker committed Apr 1, 2011
1 parent 92a6b78 commit 531ebd2
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 35 deletions.
20 changes: 7 additions & 13 deletions src/com/glines/socketio/server/SocketIOSessionManager.java
Expand Up @@ -23,23 +23,17 @@

package com.glines.socketio.server;

import java.security.SecureRandom;
import java.util.Random;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicLong;

import org.eclipse.jetty.util.log.Log;

import com.glines.socketio.common.ConnectionState;
import com.glines.socketio.common.DisconnectReason;
import com.glines.socketio.common.SocketIOException;
import org.eclipse.jetty.util.log.Log;

import java.security.SecureRandom;
import java.util.Random;
import java.util.concurrent.*;
import java.util.concurrent.atomic.AtomicLong;

class SocketIOSessionManager implements SocketIOSession.Factory {
public class SocketIOSessionManager implements SocketIOSession.Factory {
private static final char[] BASE64_ALPHABET =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"
.toCharArray();
Expand Down
32 changes: 21 additions & 11 deletions src/com/glines/socketio/server/transport/HTMLFileTransport.java
Expand Up @@ -23,29 +23,35 @@

package com.glines.socketio.server.transport;

import java.io.IOException;
import java.util.Arrays;
import com.glines.socketio.server.SocketIOFrame;
import com.glines.socketio.server.SocketIOSession;
import com.glines.socketio.server.transport.ConnectionTimeoutPreventor.IdleCheck;
import org.eclipse.jetty.util.ajax.JSON;
import org.eclipse.jetty.util.log.Log;

import javax.servlet.ServletOutputStream;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.eclipse.jetty.util.ajax.JSON;

import com.glines.socketio.server.SocketIOFrame;
import com.glines.socketio.server.SocketIOSession;
import com.glines.socketio.server.transport.ConnectionTimeoutPreventor.IdleCheck;
import java.io.IOException;
import java.util.Arrays;

public class HTMLFileTransport extends XHRTransport {
public static final String TRANSPORT_NAME = "htmlfile";

private class HTMLFileSessionHelper extends XHRSessionHelper {
private final IdleCheck idleCheck;
private IdleCheck _idleCheck;

private IdleCheck getIdleCheck() {
if(_idleCheck == null) {
_idleCheck = ConnectionTimeoutPreventor.newTimeoutPreventor();
}
return _idleCheck;
}

HTMLFileSessionHelper(SocketIOSession session, IdleCheck idleCheck) {
super(session, true);
this.idleCheck = idleCheck;
_idleCheck = idleCheck;
}

protected void startSend(HttpServletResponse response) throws IOException {
Expand All @@ -60,7 +66,11 @@ protected void startSend(HttpServletResponse response) throws IOException {
}

protected void writeData(ServletResponse response, String data) throws IOException {
idleCheck.activity();
try {
getIdleCheck().activity();
} catch (Exception e) {
Log.warn(e);
}
response.getOutputStream().print("<script>parent.s._("+ JSON.toString(data) +", document);</script>");
response.flushBuffer();
}
Expand Down
29 changes: 18 additions & 11 deletions src/com/glines/socketio/server/transport/XHRMultipartTransport.java
Expand Up @@ -23,19 +23,17 @@

package com.glines.socketio.server.transport;

import java.io.IOException;
import java.util.Arrays;
import com.glines.socketio.server.SocketIOFrame;
import com.glines.socketio.server.SocketIOSession;
import com.glines.socketio.server.transport.ConnectionTimeoutPreventor.IdleCheck;
import org.eclipse.jetty.util.log.Log;

import javax.servlet.ServletOutputStream;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.eclipse.jetty.util.log.Log;

import com.glines.socketio.server.SocketIOFrame;
import com.glines.socketio.server.SocketIOSession;
import com.glines.socketio.server.transport.ConnectionTimeoutPreventor.IdleCheck;
import java.io.IOException;
import java.util.Arrays;

public class XHRMultipartTransport extends XHRTransport {
public static final String TRANSPORT_NAME = "xhr-multipart";
Expand All @@ -45,14 +43,21 @@ private class XHRMultipartSessionHelper extends XHRSessionHelper {
private final String contentType;
private final String boundary;
private final String boundarySeperator;
private final IdleCheck idleCheck;
private IdleCheck _idleCheck;

private IdleCheck getIdleCheck() {
if(_idleCheck == null) {
_idleCheck = ConnectionTimeoutPreventor.newTimeoutPreventor();
}
return _idleCheck;
}

XHRMultipartSessionHelper(SocketIOSession session, IdleCheck idleCheck) {
super(session, true);
boundary = session.generateRandomString(MULTIPART_BOUNDARY_LENGTH);
boundarySeperator = "--" + boundary;
contentType = "multipart/x-mixed-replace;boundary=\""+boundary+"\"";
this.idleCheck = idleCheck;
_idleCheck = idleCheck;
}

protected void startSend(HttpServletResponse response) throws IOException {
Expand All @@ -66,7 +71,9 @@ protected void startSend(HttpServletResponse response) throws IOException {
}

protected void writeData(ServletResponse response, String data) throws IOException {
idleCheck.activity();
try {
getIdleCheck().activity();
} catch (Exception e) { Log.warn(e); }
Log.debug("Session["+session.getSessionId()+"]: writeData(START): " + data);
ServletOutputStream os = response.getOutputStream();
os.println("Content-Type: text/plain");
Expand Down

0 comments on commit 531ebd2

Please sign in to comment.