问题标签 [websocket]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Servlet 容器提供的 WebSockets
上周我正在查看 WebSockets,并就如何使用 Java Servlet API 实现服务器端提出了一些想法。我没有花太多时间,但在使用 Tomcat 的一些测试中遇到了以下问题,如果不修补容器或至少对 HttpServletResponse 实现进行容器特定修改,这些问题似乎无法解决:
WebSocket 规范要求在 101 HTTP 响应中定义一个消息。HttpServletResponse.setStatus(int code, String message) 已被弃用,但没有提及可用的替代品。更改默认 Tomcat 配置后,我让 Tomcat 尊重我的消息字符串,但由于该方法已弃用,我不确定这是否适用于其他 servlet 容器。
WebSocket 规范要求对连接升级请求的 HTTP 响应中前几个标头的指定顺序。servlet API 不提供指定响应标头顺序的方法,并且 Tomcat 将自己的标头添加到响应中,将其中一些标头放在任何标头之前,这些标头由 servlet 实现添加。
由于在提交 header 时不知道响应的内容长度,因此 Tomcat 会自动为响应切换为分块传输编码,这与 WebSocket 规范不兼容。
我是否遗漏了一些明显的东西,或者真的不可能将 WebSocket 服务器端点集成到基于 servlet 的 Web 应用程序中?
embedded - 如何在嵌入式设备服务器上实现 websockets?
我正在与一家电子设备制造商合作,将基于 LAN 的控制系统嵌入到产品中。这个想法是通过网络浏览器提供系统配置/控制界面,这样客户就不需要安装软件。我们可以通过嵌入式模块发送和接收串行数据与设备进行通信。由于设备也可以通过前面板 UI 进行控制,因此以极低的延迟保持远程 Web 界面同步是一项挑战。似乎 websockets 或某种 Push 是我们处理从服务器到客户端的实时事件所需要的。
我正在使用 Lantronix Mathport AR 嵌入式设备服务器。开箱即用,该单元将提供任何自定义 HTML 和 java servlet/applet。如果我们需要更大的灵活性,我们可以选择安装轻量级 Linux 发行版。我不确定如何实现任何服务器端应用程序,因为该设备未运行标准 Apache。我相信它正在使用Boa。
任何人都可以指导我如何做到这一点的正确方向吗?
websocket - 为什么当前的 websocket 客户端实现不支持代理?
Web Socket 检测到代理服务器的存在并自动设置隧道以通过代理。通过向代理服务器发出 HTTP CONNECT 语句来建立隧道,该语句请求代理服务器打开到特定主机和端口的 TCP/IP 连接。一旦建立了隧道,通信就可以畅通无阻地通过代理。由于 HTTP/S 以类似的方式工作,因此 SSL 上的安全 Web 套接字可以利用相同的 HTTP CONNECT 技术。[1]
好的,听起来很有用!但是,在我迄今为止看到的客户端实现中(Go [2]、Java [3])我没有看到任何与代理检测相关的内容。
我错过了什么还是这些实现还很年轻?我知道 WebSockets 是非常新的,客户端实现可能同样年轻和不成熟。我只想知道我是否遗漏了有关代理检测和处理的内容。
[1] http://www.kaazing.org/confluence/display/KAAZING/What+is+an+HTML+5+WebSocket
[2] http://golang.org/src/pkg/websocket/client.go
[3] http://github.com/adamac/Java-WebSocket-client/raw/master/src/com/sixfire/websocket/WebSocket.java
c# - Websocket 服务器:永远不会调用 Web 套接字上的 onopen 函数
我正在尝试实现一个 C# Web 套接字服务器,但它给我带来了一些麻烦。我正在运行一个 Web 服务器(ASP.NET)来使用 javascript 托管页面,并且 Web 套接字服务器被实现为 C# 控制台应用程序。
我能够检测到来自客户端的连接尝试(运行 javascript 的 chrome),还能够从客户端检索握手。但是客户端似乎不接受我发回的握手(onopen
永远不会调用网络套接字上的函数)。
我一直在阅读Web Socket 协议,但我看不出我做错了什么。下面是一些服务器代码:
我在我的本地主机上运行端口 8080 上的 Web 服务器和端口 8181 上的 Web 套接字服务器。
我试过用不同的编码(ASCII、字节和十六进制)发送握手,但这似乎没有什么区别。连接永远不会完全建立。javascript看起来像这样:
我猜测错误在于 C# 服务器,因为 chrome 正在按应有的方式发送信息,但正如所说的那样,该onopen
函数永远不会被调用。
简而言之,我的问题是: 你们中的任何人有没有做到这一点——如果有,你是怎么做到的?原因是:您是否在代码中看到任何明显的错误(希望不要问太多)
java - Web Sockets:浏览器不会收到消息,抱怨它不是以 0x00(字节)开头
这是我的代码:
每当我尝试将消息发送到浏览器(通过 Web 套接字)时,它都会抱怨它不是以 0x00 (这是一个字节)开头的。
有任何想法吗?
编辑 19/02 - 添加了整个代码。我知道它真的很乱而且不整洁,但我想先让它发挥作用。
花最后两天尝试修复。
websocket - 谷歌浏览器框架是否支持 websocket?
谷歌浏览器框架是否支持 websocket?
http - WebSockets 是否可以独占访问其套接字?
我很想知道,在建立 WebSocket 之后(在从支持它们的服务器接收到正确的握手之后),“WebSocket 连接”使用的 TCP 套接字是否由 WebSocket 独占使用,或者如果浏览器仍然可以使用它发出常规的 HTTP 请求。
只有对我来说,WebSockets 将独占使用它们的 TCP 套接字才有意义,但我不记得在任何文档中读过这种情况。
ruby-on-rails - nginx 可以用作后端 websocket 服务器的反向代理吗?
我们正在开发一个需要利用 html5 websockets 的 Ruby on Rails 应用程序。目前,我们有两个独立的“服务器”:我们的主应用程序在 nginx+passenger 上运行,以及一个使用 Pratik Naik 的Cramp框架(在Thin上运行)的独立服务器来处理 websocket 连接。
理想情况下,当需要部署时,我们会在 nginx+passenger 上运行 rails 应用程序,并且 websocket 服务器将代理在 nginx 后面,因此我们不需要让 websocket 服务器运行在不同的端口上。
问题是,在这个设置中,nginx 似乎过早地关闭了与 Thin 的连接。与瘦服务器的连接成功建立,然后立即关闭并显示 200 响应代码。我们的猜测是 nginx 没有意识到客户端正在尝试为 websocket 流量建立一个长时间运行的连接。
诚然,我对 nginx 配置并不是那么精通,那么,甚至可以将 nginx 配置为 websocket 服务器的反向代理吗?还是我必须等待 nginx 为新的 websocket 握手提供支持?假设要求应用程序服务器和 websocket 服务器都在端口 80 上侦听,这是否意味着我现在必须在没有 nginx 的单独服务器上运行 Thin?
提前感谢您的任何意见或建议。:)
-约翰
java - kaazing websocket 与 gae
关于使用 kaazing websocket 和 gae 的任何演示?
ajax - 如何使用websocket来加强ajax?
HTML5将成为下一个超级明星。那么~~~如何在HTML5规范的WebSocket上使用新思路实现 AJAX ?谢谢....