Skip to content

Instantly share code, notes, and snippets.

@sprsquish
Created August 31, 2012 03:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sprsquish/3548505 to your computer and use it in GitHub Desktop.
Save sprsquish/3548505 to your computer and use it in GitHub Desktop.
ackage com.twitter.wstest
import com.twitter.finagle._
import com.twitter.finagle.builder._
import com.twitter.finagle.websocket._
import com.twitter.util.Future
import com.twitter.concurrent.{Offer, Broker}
import com.twitter.ostrich.admin.PeriodicBackgroundProcess
import com.twitter.util.Time
import com.twitter.conversions.time._
import java.net.InetSocketAddress
object Main {
def main(args: Array[String]) {
ServerBuilder()
.name("wstest")
.codec(new WebSocketCodec)
.bindTo(new InetSocketAddress(8080))
.build(new WSTest)
}
}
class WebSocketResponse(requestSocket: WebSocket) extends WebSocket {
val sendBroker = new Broker[String]
val writer = new PeriodicBackgroundProcess("writer", 1.second, false) {
def periodic() { sendBroker ! Time.now.toString }
}
writer.start()
requestSocket.messages foreach { msg => sendBroker ! msg.toUpperCase }
val messages = sendBroker.recv
def release() { writer.shutdown() }
}
class WSTest extends Service[WebSocket, WebSocket] {
def apply(sock: WebSocket) = Future(new WebSocketResponse(sock))
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment