使用Java Socket Server和JavaScript Client

6

我编写了一个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服务器控制台中打印:

Bread服务器正在运行...
新连接来自: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:Pragma:no-cache
127.0.0.1:51948:Cache-Control:no-cache
127.0.0.1:51948:升级:websocket
127.0.0.1:51948:起源:http://markstuff.net
127.0.0.1:51948:Sec-WebSocket-Version: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:Accept-Encoding:gzip,deflate,sdch
127.0.0.1:51948:Accept-Language: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:
错误:软件导致连接中止:接收失败

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

1个回答

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

谢谢!对于任何想知道的人,我使用了这个 https://github.com/TooTallNate/Java-WebSocket/blob/master/src/main/example/ChatServer.java 成功让Web服务器工作。 - Mark Mark

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接