我正在尝试创建一个Java WebSocket服务器,没有什么复杂的内容,只是一个小型、丑陋的服务器,用来尝试使用浏览器中定义的标准API的websockets。我已经阅读了协议的规范,它很简单。我进行了握手,看起来它是有效的。
我在Java中做的事情是:打开一个socket,接收来自浏览器JavaScript的“new Websocket('ws://...')”请求,发送服务器响应创建“Sec-WebSocket-Accept”。所有这些似乎都正常工作!谷歌Chrome开发人员工具向我展示连接成功...(这里是图片)
并且我还制作了一个ws.onopen = function(ev){ alert("Opened!!");},它也可以工作...(所以连接一定没问题吧?)
但现在,我正在尝试从服务器向浏览器或从浏览器向服务器发送数据,但什么也没有发生...
要从浏览器向服务器发送数据,我只需执行ws.send(“datos”)而在服务器端,我尝试通过执行readLine(in)来读取它,其中in = clientSocket.getInputStream()...但没有任何反应...
而要将数据从服务器发送到浏览器,则会执行out.write(webSockFrame(“data”)getBytes()),但在浏览器中什么也没发生...在浏览器中,我正在等待数据通过执行ws.onmessage = function(ev){....}...。
(webSockFrame(string)函数在字符串的开头和结尾添加了标准要求的两个字节。)
我还尝试使用telnet连接到服务器(检查服务器是否正常工作),它完美地工作,从telnet和服务器发送和接收数据...
我做错了什么?
我正在使用Chrome的最新版本(14)。
我不想构建一个重型并发服务器,只是一个小型的服务器来尝试这项新技术。
更新:我不知道还有什么可以尝试...我执行了netstat -a以查看连接是否真正活动或只是chrome的错误,但出乎我的意料,它存在并且已打开,直到我关闭web服务器为止...我不知道为什么send和ws.onmessage不起作用...
更新II:我对事件onopen进行了文本更改,文本更改了...并且还进行了onclose文本更改,当我关闭服务器时文本也更改了...所以连接确实存在,而且onopen和onclose完美地工作...
我在Java中做的事情是:打开一个socket,接收来自浏览器JavaScript的“new Websocket('ws://...')”请求,发送服务器响应创建“Sec-WebSocket-Accept”。所有这些似乎都正常工作!谷歌Chrome开发人员工具向我展示连接成功...(这里是图片)
并且我还制作了一个ws.onopen = function(ev){ alert("Opened!!");},它也可以工作...(所以连接一定没问题吧?)
但现在,我正在尝试从服务器向浏览器或从浏览器向服务器发送数据,但什么也没有发生...
要从浏览器向服务器发送数据,我只需执行ws.send(“datos”)而在服务器端,我尝试通过执行readLine(in)来读取它,其中in = clientSocket.getInputStream()...但没有任何反应...
而要将数据从服务器发送到浏览器,则会执行out.write(webSockFrame(“data”)getBytes()),但在浏览器中什么也没发生...在浏览器中,我正在等待数据通过执行ws.onmessage = function(ev){....}...。
(webSockFrame(string)函数在字符串的开头和结尾添加了标准要求的两个字节。)
我还尝试使用telnet连接到服务器(检查服务器是否正常工作),它完美地工作,从telnet和服务器发送和接收数据...
我做错了什么?
我正在使用Chrome的最新版本(14)。
我不想构建一个重型并发服务器,只是一个小型的服务器来尝试这项新技术。
更新:我不知道还有什么可以尝试...我执行了netstat -a以查看连接是否真正活动或只是chrome的错误,但出乎我的意料,它存在并且已打开,直到我关闭web服务器为止...我不知道为什么send和ws.onmessage不起作用...
更新II:我对事件onopen进行了文本更改,文本更改了...并且还进行了onclose文本更改,当我关闭服务器时文本也更改了...所以连接确实存在,而且onopen和onclose完美地工作...
ws.send("data")
,则在服务器上会得到编码数据,您必须使用新规范中指定的算法进行解码。一段时间以前,我发布了一些伪代码-它可能有助于在服务器上解码。请注意,从服务器到客户端的消息也应该采用特定格式。https://dev59.com/nVrUa4cB1Zd3GeqPhjMh#7045885 - pimvdbws.send(...)
调用中发送的任何数据都没有到达服务器? - pimvdb