Websocket ws和wss之间的区别?

Websocket ws和wss之间的区别?,websocket,java-websocket,Websocket,Java Websocket,将ws更改为wss的过程是什么 wss是通过普通HTTP进行升级还是仅通过HTTPS工作 webSocket = new WebSocket("ws://localhost:port/Esv/ocp"); 当我将ws更改为wss时,效果很好 webSocket = new WebSocket("wss://localhost:port/Esv/ocp"); 它显示了这个错误: 建立连接时出错:net::ERR\u SSL\u协议\u错误 短版 到SSL还是不到SSL 你可能会有一个好主意。连

将ws更改为wss的过程是什么

wss是通过普通HTTP进行升级还是仅通过HTTPS工作

webSocket = new WebSocket("ws://localhost:port/Esv/ocp");
当我将ws更改为wss时,效果很好

webSocket = new WebSocket("wss://localhost:port/Esv/ocp");
它显示了这个错误:

建立连接时出错:net::ERR\u SSL\u协议\u错误

短版 到SSL还是不到SSL

你可能会有一个好主意。连接点规则可以是:

  • wss
    仅通过https连接
  • ws
    连接到
    http
反之亦然:

  • https
    仅接受wss
  • http
    只接受
    ws
错误

以下情况将导致错误(在Firefox下进行的测试):

  • 如果要将
    wss
    连接连接到
    http
    端点。在我的测试中,我有一个 InvalidStateError:试图使用不可用或不再可用的对象

  • 如果要将
    ws
    连接连接到
    https
    端点,则会出现错误 SecurityError:操作不安全

正式答复 websocket的圣经是。在第节中:

如果/secure/为true,则客户端必须在打开连接后和发送握手数据之前通过连接执行TLS握手[RFC2818]。如果失败(例如,无法验证服务器的证书),则客户端必须使WebSocket连接失败并中止连接。否则,此通道上的所有进一步通信必须通过加密隧道[RFC5246]进行

安全标志由URI定义。第3节定义了什么是安全的

如果方案组件不敏感地匹配“wss”大小写,则URI称为“secure”(据说设置了“secure标志”)


TL;博士 如果要使用wss:

  • 您必须激活SSL
  • 必须保护您的端点(
    https://...
    ):“安全降级”是不允许的
如果要使用
ws

  • 确保端点未启用SSL(
    http://...

谢谢..wss真的有可能也适用于http吗?不,websocket不允许“安全”降级。我将编辑我的答案以突出显示这一点。谢谢指点out@mahe我根据您的反馈更新了我的答案。它回答了你的问题吗?@mahe:通过HTTP连接WSS的唯一方法是使用中间WebSocket代理,该代理接受WSS/HTTPS并使用WS/HTTP转发。