网站搜索

java - Tomcat websocket 无法工作

我尝试了下面的 websocket 示例代码,我的浏览器支持 HTML 5 websocket,但下面的示例代码在 JavaScript 中总是提示“关闭”。代码出了什么问题?

websocket.java

@WebServlet("/websocket") public class websocket extends WebSocketServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletRes

阅读更多 →

javascript - 使用 Node.js 的实时:WebSocket + 服务器端轮询与客户端轮询

我正在开发一个应用程序,用于显示来自 Redis 的实时数据(图表等)。更新的数据非常快速地传到 Redis(毫秒级)。因此,尽可能频繁地显示更新是有意义的(只要人眼能察觉到)。

技术栈:

  • Node.js 作为 Web 服务器
  • 存储数据的 Redis
  • JavaScript/HTML(AngularJS)作为客户端

目前我有客户端轮询(每秒向 Node.js 服务器发送 GET 请求,该服务器查询 Redis 以获取更新)。

将轮询放在服务器端并通过 WebSocket 公开更新有什么优势吗?不过每个 WebSocket 连接都需要单独的 Node.js 轮询(setInterval),因为客户端查询可能不同。但预计不会有超过 100 个 WebSocket 连接。

这两种方法各有什么优缺点吗?

答案#1

如果我理解你的问题正确:你有不到100个用户将会同时使用你的资源,你想要找出什么

阅读更多 →

javascript - Websockets 消息完整性

在客户端和服务器之间使用 WebSocket 全双工数据连接时,我是否能保证,当从服务器发送两个消息时,我会在客户端收到完全相同的两个消息,而这是 TCP 无法做到的?

换句话说,如果服务器依次发送 hello 然后是 its me,客户端是否总是接收到包含 hello 和 its me 的两条消息,还是有可能客户端接收到 helloit 然后是 s me,或者甚至只接收到一条消息,比如 helloits me?

答案#1

WebSocket 最初有文本消息的开始和结束字节,但那是旧信息。在(2011 年 12 月)的帧结构中有一个长度部分。顺便说一下,帧结构规范中有一个标志,用于指定该帧是完整的“消息”还是一个“消息片段”,也就是说,还有其他帧组成这条“消息”。由接收方

阅读更多 →

javascript - 在 WebSocket (ws) 上接收 ArrayBuffer

我想使用 ws 处理从客户端接收到的 ArrayBuffer 消息。在客户端,由于 ws.binaryType,我可以直接接收到 ArrayBuffer,但在服务器端,我没有接收到 ArrayBuffer,而是收到类似这样的东西(字符串?):'< Buffer 00 00 2a 00 00 00 00 00 00 00 00 00 00 00 00 00>'。

服务器如何接收 ArrayBuffer?

客户端:

var ws = new WebSocket("ws://localhost:3000/"); ws.binaryType = 'arraybuffer'; w

阅读更多 →

javascript - 使用 AJAX 或 WebSockets 访问部分响应?

我正在使用一些客户端 JavaScript 代码通过 HTTP GET 从网络服务器获取大量 JSON 数据。数据量可能很大,比如 50 MB。这是在局域网中,所以问题不大,但仍然需要大约十秒钟。

为了让我的界面更具响应性,我希望分块处理响应,在数据一可用时就显示在用户界面中(比如,每兆字节或每秒)。浏览器兼容性不是问题;只要能在最新的 Chrome 和 Firefox 上运行就可以。然而,我无法修改服务器代码。

是否有可能使用 XMLHttpRequest、WebSockets 或我没听说过的其他技术来实现这一点?

XMLHttpRequest.responseTe

阅读更多 →

javascript - 当客户端从网络断开时,Chrome - Linux 中 websocket 的 onclose 未触发

我在服务器端使用 Java 实现了 websocket。在客户端,我创建了 websocket 对象,并且我为所有事件(包括 onClose)编写了自己的函数。我测试了重连……在 Windows 上的 Chrome 26 和 Mozilla 中测试了 websocket。

在 Windows 中,当我拔掉网线时,Chrome 会触发 onclose 事件(即 onclose 触发,closecode 为 1006 [异常关闭],如 https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent 所述),但在 Linux 中 Chrome 不会触发任何事件。

请指出我犯了什么错误。

我确切的问题是,为什么在 Windows 中,当网络断开时,Chrome 会触发 onclose,但在 Linux 中则不会触发。

答案#1

这些应用

阅读更多 →

javascript - 使用 Websockets 的 Redux-thunk

我想在某些组件想要订阅数据时按需创建一个 websocket。我如何以 redux 的方式共享 websocket 实例?

action.js

export function subscribeToWS(url) { return dispatch => { let websocket = new WebSocket(url) websocket.on('connect', () => { websocket.send("subscribe") } websocket.on('message', (message) => { dispatch(storeNewData(message)) } } }

我可以做类似这样的事情,但这将需要为每个新的订阅创建一个新的实例。

答案#1

像持久连接对象这样的东

阅读更多 →

javascript - 从路由发送 websocket 消息

我正在尝试使用 WebSocket 设置我的服务器,这样当我通过路由更新某些内容时,当该路由上的内容被更新时,我也可以发送一个 WebSocket 消息。

这个想法是在有人访问路由 /add-team-member 时,将某些内容保存到我的 Mongo 数据库中,然后向所有通过 websocket 连接并属于对应团队的 websocket 房间的用户发送一条消息。

我按照 socket.io 的文档以以下方式设置了我的应用程序:

App.js

// there's a lot of code in here which sets what to u

阅读更多 →

javascript - 在 EC2 实例上使用 socket.io 时获取“websocket 连接无效”错误?

我有一个使用 node.js 编写的基于 express 和 socket.io 的 web 应用,这个应用在本地主机上运行得非常好,但是当我部署到我的 EC2 服务器时,它连接大约 20 秒后就断开,然后又重新连接,如此循环……

在节点控制台上给我错误显示为

warn - websocket connection invalid info - transport end

服务器

app = express() server = http.createServer(app) io = require('socket.io').listen(server)

客户

socket = io.connect()

我知道问题不在我的代码上,因为我已经在本地主机上完全测试了这个网络应用,所以唯一的问题是这段代码运行的地方,也就是我的

阅读更多 →

javascript - Safari 扩展:WebSocket 连接失败调用 onclose 而不是 onerror,并且没有异常

我正在为 Firefox、Chrome 和 Safari 编写浏览器扩展。当尝试使用 Safari 扩展连接到 WebSocket 服务器时,如果某个端口上没有服务器监听,我的 Safari 扩展不会抛出异常,也不会调用 onerror。相反,Safari 扩展的 onclose 处理程序会被调用。我还在控制台看到以下消息:

[Error] WebSocket network error: The operation couldn’t be completed. Connect

阅读更多 →