gpt4 book ai didi

scala - 基本 Play 框架路由和 Web 套接字示例

转载 作者:行者123 更新时间:2023-12-04 11:26:17 25 4
gpt4 key购买 nike

我正在尝试学习如何在 Play 2.1 中使用 Web 套接字,但在获取 Web 套接字 URL 以使用我的应用程序的路由配置时遇到了问题。我从一个新的 Play 应用程序和 Play framework documentation on websockets 开始。 .

这是我的 conf/routes :

# Home page
GET / controllers.Application.index

# Websocket test site
GET /wstest controllers.Application.wstest

然后我添加了 wstest功能到我的 Controller 类:
object Application extends Controller {

def index = Action {
Ok(views.html.index("Websocket Test"))
}

def wstest = WebSocket.using[String] { request =>
// Log events to the console
val in = Iteratee.foreach[String](println).mapDone { _ =>
Logger.info("Disconnected")
}

// Send a single 'Hello!' message
val out = Enumerator("Hello!")

(in, out)
}
}

但是,到目前为止,我只能使用 URL ws://localhost:9000/wstest 访问 websocket。 (使用 websocket.org/echo.html 处的示例代码)。我在看 sample/scala/websocket-chat Play框架自带的app,它使用路由配置文件来引用websocket,像这样:
var WS = window['MozWebSocket'] ? MozWebSocket : WebSocket
var chatSocket = new WS("@routes.Application.chat(username).webSocketURL()")

我尝试用 @routes.Application.wstest.webSocketURL() 替换我的 websocket URL和 @routes.Application.wstest .第一个不编译。第二个编译,但客户端和服务器不交换任何消息。

我如何使用我的 Play 路由配置来访问这个 websocket?我在这里做错了什么?

编辑

这是我的编译错误“无法在此处找到任何 HTTP 请求 header ”的屏幕截图:

compilation-error

最佳答案

如果没有编译器错误,很难猜测可能是什么问题。

由于隐式请求,您必须使用括号,即 @routes.Application.wstest().webSocketURL() ,或者您在 webSocketURL 调用所需的范围内没有隐式请求。

关于scala - 基本 Play 框架路由和 Web 套接字示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16614753/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com