有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JavaScriptWebSocket Java服务器。不发送消息也不接收

我正在尝试制作一个JavaWebSocket服务器,没有什么复杂的东西,只是一个小而丑陋的服务器,用标准定义的api从浏览器中尝试WebSocket

我一直在阅读协议的规范,它非常简单。我已经握手了,很明显,它起作用了

我对Java所做的是:打开一个socket,从浏览器的JavaScript接收来自new Websocket("ws://...")的请求,发送服务器的响应,创建“SecWebSocket Accept”。所有这些似乎都起作用了!google 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的一个错误,但是让我惊讶的是,它存在并且在我关闭Web服务器之前一直被打开。。。我不知道为什么发送和ws。onmessage不起作用

更新二:我对onopen事件的文本进行了更改,文本更改。。。还对文本进行了一次关闭更改,当我关闭服务器时,文本更改。。。所以连接确实存在,onopen和onclose工作得很好


共 (2) 个答案

  1. # 1 楼答案

    见:Weird websocket behavior: only send data when close the tab

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

  2. # 2 楼答案

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