在新的Jetty版本中,WebSocket实现分为几个子接口:
http://download.eclipse.org/jetty/stable-7/apidocs/org/eclipse/jetty/websocket/WebSocket.html
为什么这样做是个好主意?
什么是这种分离的好用例?
好的,现在我已经阅读了更多关于这个问题的内容并实现了一些我会尝试自己回答的问题.
标准WebSocket接口只有方法
onOpen(Connection con)
Run Code Online (Sandbox Code Playgroud)
和
onClose(int closeCode, String message)
Run Code Online (Sandbox Code Playgroud)
使用在打开WebSocket时获取的Connection,您可以向浏览器发送消息(二进制文件或文本).
所以标准的WebSocket接口基本上只是用于打开连接并向浏览器发送消息.
您不必处理其他功能,例如当消息从浏览器到达时.
如果你想要其他功能,还有WebSocket 的其他子接口:Websocket.OnFrame,OnBinaryMessage,OnTextMessage,OnControl
所以现在如果你想让你的WebSocket处理文本消息和二进制消息,你必须像这样实现它:
class MyWebSocket implements WebSocket.OnTextMessage, WebSocket.OnBinaryMessage{
// Implementation
}
Run Code Online (Sandbox Code Playgroud)
您始终只需要实现任务所需的接口,而不是所有其他功能,如果它们与您无关.这简化了代码并减少了代码长度.