Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 播放2.4 WebSocket演员不';不回答_Scala_Playframework_Websocket_Akka - Fatal编程技术网

Scala 播放2.4 WebSocket演员不';不回答

Scala 播放2.4 WebSocket演员不';不回答,scala,playframework,websocket,akka,Scala,Playframework,Websocket,Akka,我尝试将PlayFramework中的WebSocket与Akka Actor一起使用,但当我尝试将其与chrome或firefox一起使用时,它不起作用: var exampleSocket = new WebSocket("ws://127.0.0.1:9000"); WebSocket connection to 'ws://127.0.0.1:9000/' failed: Error during WebSocket handshake: Unexpected response code

我尝试将PlayFramework中的WebSocket与Akka Actor一起使用,但当我尝试将其与chrome或firefox一起使用时,它不起作用:

var exampleSocket = new WebSocket("ws://127.0.0.1:9000");
WebSocket connection to 'ws://127.0.0.1:9000/' failed: Error during WebSocket handshake: Unexpected response code: 200
我的控制器摘录:

package controllers

import javax.inject.Inject
import play.api.libs.ws.WSClient
import play.api.mvc.Controller
import akka.actor.ActorSystem
import actors.ContainersActor
import play.api.mvc.WebSocket
import play.api.Play.current
import play.api.libs.concurrent.Execution.Implicits.defaultContext

class ContainersController @Inject() (ws: WSClient, system: ActorSystem) extends Controller {  

  def socket = WebSocket.acceptWithActor[String, String] { request => out =>
    ContainersActor.props(out)
  }
  println("socket : "+socket);
}
我的演员:

package actors

import akka.actor.Actor
import akka.actor.ActorRef
import akka.actor.Props
import akka.actor.actorRef2Scala

object ContainersActor {
  def props(out: ActorRef) = Props(new ContainersActor(out))
}

class ContainersActor(out: ActorRef) extends Actor {
  def receive = {
    case msg: String =>
      out ! ("I received your message: " + msg)
  }
}
我遵循以下文件:

谢谢你的帮助:)

解决方案: 我没有为套接字创建路由,我以为它是另一个协议(x)

我在conf/routes中添加了这一行

GET    /socket        controllers.ContainersController.socket
我用以下命令调用套接字:

var exampleSocket = new WebSocket("ws://127.0.0.1:9000/socket");

您似乎正在尝试使用WebSocket连接连接到标准http路由,该路由会以状态代码200回答您。

您能告诉我们您的路由吗?