播放Websocket连接已关闭
Play Websocket connection closed
我开始使用webSockets,angular&玩我使用https://github.com/AngularClass/angular-websocket以获得良好的角度积分。这样的连接:
var dataStream = $websocket('wss://echo.websocket.org/');
效果很好。但是尝试连接到:
var dataStream = $websocket('wss://localhost:9000/socket');
结果:
WebSocket connection to 'wss://localhost:9000/socket' failed: Error in connection establishment: net::ERR_CONNECTION_CLOSED
在play/nety日志中,我只找到:
play.core.server.netty.PlayDefaultUpstreamHandler - Exception caught in Netty
java.lang.IllegalArgumentException: empty text
这是我在后台使用的代码:
def socket = WebSocket.acceptWithActor[String, String] { request => out =>
MyWebSocketActor.props(out)
}
object MyWebSocketActor {
def props(out: ActorRef) = Props(new MyWebSocketActor(out))
}
class MyWebSocketActor(out: ActorRef) extends Actor {
def receive = {
case msg: String =>
out ! ("I received your message: " + msg)
}
}
(基于:https://www.playframework.com/documentation/2.4.x/ScalaWebSockets)
这里是我的代码:https://github.com/dataplayground/playground/blob/master/public/javascripts/main.js
如我的评论中所述:
-
您是否尝试过使用普通的ws协议而不是安全的ws协议?应该是这样的:
$websocket('ws://localhost:9000/socket')
-
您已经定义了一个处理
[String, String]
的actor,但实际上您在Angular部分使用JSON。两者实际上应该匹配,所以请尝试:WebSocket.acceptWithActor[JsValue, JsValue]
我真的不确定您是否返回了正确的JSON数据,也不确定Angular方面的处理。
首先,如果使用反斜杠'
方法(https://www.playframework.com/documentation/2.3.x/api/scala/index.html#play.api.libs.json.JsValue)您会得到一个JsValue
,但这并不一定代表有效的JSON。如果您有{"foo": "test"}
并搜索的,那么您会得到"test",但这实际上不是一个有效的JSON。
只是为了快速获得反馈:尝试将Websocket Actor更改为[JsValue, String]
类型,或者您可以在Actor:中构造一个新的JsValue
class MyWebSocketActor(out: ActorRef) extends Actor {
def receive = {
case msg: JsValue =>
Logger.debug("actor something " + out)
Logger.debug("message " + Json.prettyPrint(msg))
val json: JsValue = Json.parse("""
{
"fooReply" : "Something"
}
""")
out ! json
}
}
编辑:
这是否来自你必须获得data
属性而不是直接获得message
的ng-websocket?
dataStream.onMessage(function (message) {
collection.push(JSON.parse(message.data));
});
- Node.js上的WebSocket,并在所有连接的客户端之间共享消息
- Websocket赢得't打开连接
- JavaScript和Java WebSocket SSL连接错误
- 将Websocket连接保持在多个页面上
- websocket客户端在发送大数据时断开连接
- Chrome点击mailto:links关闭websocket连接
- 为 WebSocket 连接配置身份验证标头
- 重新连接具有共享RxJS observable的WebSocket
- WebSocket突然拒绝连接
- JS Websocket卡在连接TCPListener-VB.net的状态
- 没有同源连接策略的WebSocket的安全性
- 无法从我的 Angular2 应用程序中连接到我的 WebSocket
- ASP.NET 5 WebSocket 连接的错误 404
- 在单个 Javascript 函数中处理多个 websocket 订阅,但只有一个连接对象
- WebSocket 发送有关连接的额外信息
- Websocket:服务器断开连接与页面导航
- 如何在火狐插件的后台保持恒定的 websocket 连接
- C# & JS WebSocket 某些用户无法连接到服务器
- AngularJS:在服务中重新连接WebSocket
- Chrome连接websocket服务器失败(操作码-1)“握手被取消”