【问题标题】:Java Socket Server with JavaScript Client带有 JavaScript 客户端的 Java 套接字服务器
【发布时间】:2016-05-17 11:26:50
【问题描述】:

我将一个可以相互发送消息的 Java 套接字服务器和客户端放在一起,我想使用 JavaScript 作为客户端,但是...这是我托管 Java 服务器并加载 JavaScript 客户端时发生的情况.

JavaScript:

    var connection = new WebSocket('ws://127.0.0.1:9005');
connection.onopen = function () {
  connection.send('Ping');
};

这在 chrome 控制台中打印:

WebSocket 连接到“ws://127.0.0.1:9005/”失败:WebSocket 握手期间出错:状态行无效
WebSocket 错误 [对象事件]

我想要做的是向 Java 服务器发送“Ping”,但它发送所有这些东西而不是断开连接......

这会打印在 Java 服务器控制台中:

面包服务器正在运行...
新连接来自:127.0.0.1:51948
127.0.0.1:51948:GET / HTTP/1.1
127.0.0.1:51948:主机:127.0.0.1:9005
127.0.0.1:51948:连接:升级
127.0.0.1:51948:编译指示:无缓存
127.0.0.1:51948:缓存控制:无缓存
127.0.0.1:51948:升级:websocket
127.0.0.1:51948:来源:http://markstuff.net
127.0.0.1:51948:Sec-WebSocket 版本:13
127.0.0.1:51948:用户代理:Mozilla/5.0(Windows NT 6.1;WOW64)
AppleWebKit/537.36(KHTML,如 Gecko)Chrome/48.0.2564.103 Safari/537.36
127.0.0.1:51948:接受编码:gzip、deflate、sdch
127.0.0.1:51948:接受语言:en-US,en;q=0.8
127.0.0.1:51948:Sec-WebSocket-Key:D4Epyc7LwvPdfeDWG0sY2g==
127.0.0.1:51948:Sec-WebSocket-Extensions:permessage-deflate; client_max_window_bits
127.0.0.1:51948:
错误:软件导致连接中止:recv 失败

JavaScript 客户端: markstuff.net/socket/-markstuff.net/socket/client.js
Java 服务器: pastebin com cdZjUWQp
Java客户端: pastebin com efEeezcR

【问题讨论】:

    标签: javascript java


    【解决方案1】:

    听起来您正在尝试将 Websocket 客户端连接到服务器端的裸套接字侦听器。请注意,Websocket 不等于套接字。 Websocket 是 tcp 连接之上的协议(就像 http 在 tcp 之上的方式一样)。
    因此,您应该将服务器实现更改为 Websocket(您可以在 Internet 上找到许多 Java Websocket 库)或将客户端更改为套接字。
    我不确定如何在 JS 中创建套接字连接,但这个主题可能有助于解决这个问题:Connecting to TCP Socket from browser using javascript

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-17
    • 2013-05-14
    • 2015-06-01
    • 2012-06-05
    • 2016-11-19
    • 2017-02-25
    • 2012-06-24
    • 1970-01-01
    相关资源
    最近更新 更多