[英]Play 2.4 WebSocket Actor doesn't respond
我正在尝试将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)
}
}
我遵循以下文档: https : //www.playframework.com/documentation/2.4.x/ScalaWebSockets
谢谢您的帮助 :)
解决方案:我没有为套接字建立路由,我认为这是另一个协议x)
我在conf / routes上添加了这一行
GET /socket controllers.ContainersController.socket
我用以下命令调用套接字:
var exampleSocket = new WebSocket("ws://127.0.0.1:9000/socket");
似乎您正在尝试将WebSocket连接连接到标准的http路由,从而用状态码200回答您。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.