gpt4 book ai didi

ssl - 如何在 Play!Framework WebSockets ("wss://"中使用 TLS)

转载 作者:太空宇宙 更新时间:2023-11-03 12:40:23 27 4
gpt4 key购买 nike

我无法在使用 Play!Framework 2.2 创建的简单 WebSocket 应用程序中使用 wss://。它回显消息。端点是这样的

def indexWS2 = WebSocket.using[String] {
request => {
println("got connection to indexWS2")

var channel: Option[Concurrent.Channel[String]] = None
val outEnumerator: Enumerator[String] = Concurrent.unicast(c => channel = Some(c))

// Log events to the console
val myIteratee: Iteratee[String, Unit] = Iteratee.foreach[String] {gotString => {
println("received: " + gotString)

// send string back
channel.foreach(_.push("echoing back \"" + gotString + "\""))
}}

(myIteratee, outEnumerator)
}
}

路线描述为

GET     /ws2                        controllers.Application.indexWS2

我从这样的 JS 客户端创建连接

myWebSocket = new WebSocket("ws://localhost:9000/ws2");

一切正常。但是,如果我将 ws:// 更改为 wss:// 以使用 TLS,它将失败并且我会收到以下 Netty 异常:

[error] p.nettyException - Exception caught in Netty
java.lang.IllegalArgumentException: empty text

我怎样才能使这项工作?谢谢。

最佳答案

我真的很想为你解决这个问题!但我不喜欢这个答案。似乎还没有对 websockets 的 SSL 的 Play 支持。在这里看到它的提及并且没有任何进展的迹象: http://grokbase.com/t/gg/play-framework/12cd53wst9/2-1-https-and-wss-secure-websocket-clarifications-and-documentation

但是,还是有希望的!您可以将 nginx 用作安全的 websocket (wss) 端点,以转发到具有不安全的 websocket 端点的内部 Play 应用程序:

页面http://siriux.net/2013/06/nginx-and-websockets/为 nginx 提供了这个解释和示例代理配置:

目标:WSS SSL 端点:转发 wss|https://ws.example.com 到 ws|http://ws1.example.com:10080

“代理也是 WSS 和 HTTPS 连接的 SSL 端点。因此客户端可以使用 wss://连接(例如,来自通过 HTTPS 提供的页面),它可以更好地与损坏的代理服务器等配合使用。”

server {
listen 443;
server_name ws.example.com;

ssl on;
ssl_certificate ws.example.com.bundle.crt;
ssl_certificate_key ws.example.com.key;
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;

location / {

# like above

}
}

Nginx 是如此轻巧和有趣。会毫不犹豫地选择这个选项。

关于ssl - 如何在 Play!Framework WebSockets ("wss://"中使用 TLS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19590674/

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