Websocket Java Server。不发送消息也不接收

时间:2011-10-03 18:05:10

标签: java javascript sockets websocket

我正在尝试创建一个Java WebSocket服务器,没有什么真正复杂的,只是一个小丑陋的小型服务器,使用标准定义的api从浏览器中尝试websockets。

我一直在阅读协议的规范,这很简单。我做了握手,显然它正在工作。

我用Java做的是:打开一个套接字,从浏览器的JavaScript接收来自new Websocket("ws://...")的请求,发送服务器的响应,创建“Sec-WebSocket-Accept”。所有这些似乎都在起作用!谷歌Chrome开发人员工具向我显示连接成功...(这是图像)

connection

我也制作了一个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,但我惊讶它存在并且打开直到我关闭网络服务器...我不知道为什么发送和ws.onmessage不起作用...

更新II:我更改了onopen事件上的文本,文本发生了变化......并且还对文本进行了近距离更改,当我关闭服务器时文本发生了变化......所以连接确实存在而onopen和onclose完美地运作......

2 个答案:

答案 0 :(得分:0)

您可能首先要阅读Simple (Java, Javascript) start on Websockets的答案。你的任务不是新任务。帖子Easy to Program WebSocket Server中也有一些关于同一主题的聊天。有一个带link的运行演示可以下载所有的javascript代码(在服务器上运行)。如果你想关注那个博客(最后一个链接),那么应该有一个关于javascript方面的完整教程 - 可能是本周。我今天开了个好头。此外,定期从扳手中选择关于Google Chrome以更新您的铬浏览器。

答案 1 :(得分:0)

请参阅:Weird websocket behavior: only send data when close the tab

我刚刚在C中使用websocket服务器。成功写入/发送握手头响应后,我尝试通过浏览器或从服务器向浏览器发送一些数据,但没有任何反应!我想也许我做错了什么并重新阅读websockets的规格但无法解决问题!当我看到你的帖子时,我决定测试你的说法,你是对的!也许chrome还是模糊的websockets。我将尝试实现新的帧包装消息,并查看客户端(浏览器)是否接收到我的数据。与此同时,在关闭选项卡或窗口之前,浏览器看起来并不会刷新数据...奇怪!