2016-02-08 10 views
5

के साथ वेबसाइट जो मुझे connection.handleWithAsyncHandler के साथ काम करने के लिए अक्का http websockets नहीं मिल सकता है।एसिंक हैंडलर

<!doctype html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Document</title> 
</head> 
<body> 
<script> 
    var ws = new WebSocket('ws://localhost:9000/websocket'); 

    ws.onopen = function() { 
     console.log('open'); 

     ws.send('test message'); 
    }; 

    ws.onmessage = function(msg) { 
     console.log(msg.data); 
    }; 

    ws.onclose = function() { 
     console.log('close'); 
    }; 
</script> 
</body> 
</html> 

कंसोल में मैं

open 
close 
मिल: यहाँ स्केला में मेरी कोड यह परीक्षण करने के लिए (मैं अक्का http के नवीनतम संस्करण का उपयोग कर रहा)

import akka.actor.ActorSystem 
import akka.http.scaladsl.Http 
import akka.http.scaladsl.model.HttpMethods._ 
import akka.http.scaladsl.model._ 
import akka.http.scaladsl.model.ws.{Message, UpgradeToWebsocket} 
import akka.stream.ActorMaterializer 
import akka.stream.scaladsl.{Flow, Sink} 

import scala.concurrent.Future 

object Server extends App { 
    implicit val system = ActorSystem("server-system") 
    implicit val materializer = ActorMaterializer() 
    implicit val dispatcher = system.dispatcher 
    implicit val formats = net.liftweb.json.DefaultFormats 

    val serverSource = Http().bind(interface = "localhost", port = 9000) 

    val requestHandler: HttpRequest => Future[HttpResponse] = { 
     case request @ HttpRequest(GET, Uri.Path("/websocket"), _, _, _) => { 
      Future { 
       request.header[UpgradeToWebsocket] match { 
        case Some(upgrade) => { 
         upgrade.handleMessages(Flow[Message]) 
        } 
        case None => { 
         HttpResponse(StatusCodes.BadRequest) 
        } 
       } 
      } 
     } 
     case _: HttpRequest => { 
      Future.successful(HttpResponse(StatusCodes.BadRequest)) 
     } 
    } 

    val bindingFuture = serverSource.to(Sink.foreach { connection => 
     connection.handleWithAsyncHandler(requestHandler) 
    }).run() 
} 

और मेरी जे एस कोड है

खोले जाने के बाद वेबसाइकिल कनेक्शन सीधे क्यों बंद हो जाता है?

उत्तर

1

एक्का 2.4.2-आरसी 2 को अपडेट करने से चाल चल रही थी।