- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
有人读过 Hickson 2010 年 5 月的 draft-hixie-thewebsocketprotocol-76 WebSocket 协议(protocol)吗?
这是 .htm 文件的来源:
<html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript">
var socket = new WebSocket('ws://localhost:8181/websession');
socket.onopen = function() {
alert('handshake successfully established. May send data now...');
};
socket.onclose = function() {
alert('connection closed');
};
</script>
</head>
<body>
</body>
</html>
如果我有一个监听 8181 的 TCP 端口,这是我在 Chrome 中加载上面的 .htm 文件时收到的请求:
GET /websession HTTP/1.1
Upgrade: WebSocket
Connection: Upgrade
Host: localhost:8181
Origin: null
[\n]
(其中 [\n] 是 CRLF 字符。)
我应该返回这个握手开启者什么? draft-hixie-thewebsocketprotocol-76 显示:
HTTP/1.1 101 WebSocket Protocol Handshake
Upgrade: WebSocket
Connection: Upgrade
Sec-WebSocket-Origin: http://example.com
Sec-WebSocket-Location: ws://example.com/demo
Sec-WebSocket-Protocol: sample
8jKS'y:G*Co,Wxa-
不过,此响应会导致 socket.onclose
触发。
最佳答案
Draft 76 将 WebSocket-
响应 header 重命名为 Sec-WebSocket-
,并添加了一些不必要的丑陋的 Key
header 和请求正文加密内容8jKS'y:G*Co,Wxa-
是一个响应。但这只是对草案中包含的示例的正确响应;为任何其他请求返回该特定字符串是不好的。参见 this post有关如何实现新协议(protocol)的说明。
无论如何,除非您使用的是最新的开发版本,否则 Chrome/Chromium 仍将使用旧的 75 草案协议(protocol)(如您发布的请求所示),并且不会与实现新协议(protocol)的服务器通信协议(protocol)。查看Chromium blog获取更多信息。如果您需要支持旧/当前 Chrome 版本,您实际上必须实现两个 WebSocket 协议(protocol)。
这始终是针对尚未标准化的协议(protocol)开发内容的风险。在 WebSocket 最终确定之前,您可以期待烦人的互操作性;您可能更愿意等到那时。
(试图真正阅读规范并找出在大量不可读的解析算法中究竟发生了什么变化,是一种令人沮丧的练习。我不知道为什么它是这样写的,而不是通常的 BNF 样式规范 RFC就像。就好像 Hixie 用 C 编写了一个解析器,然后编写了一个自动化工具来将代码转换为英语。C 本来更具可读性。)
关于HTML5 : Latest WebSockets,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3139578/
我刚刚遇到了一个关于 Gradle 依赖管理的小问题。 我知道我可以使用 latest.integration 声明依赖项引用快照或使用 latest.release从发布版本中引用工件。 我的问题是
还在这里学习gradle。寻找一种方法来获取给定范围的最新“任何内容”(快照/集成或发行)或必须发行的最新文件,例如[1.0,2.0]。有没有办法指定?在各处搜索,仅找到使用范围的引用(似乎不允许我限
我必须为许多文件检查一个文件的两个版本之间的差异。要获得黑白差异,我需要 dssc vhist,然后我必须检查最新版本和最后一个版本。然后我会得到版本的差异。它会消耗更多时间。以简单的方式处理这件事的
我有一个用于 PR 的 GitHub Action 工作流程,其中包含一个执行一些 NET Core 虚拟测试的作业,这些测试需要 PostgreSQL + SQL Serve 的实例。 工作定义:
例如,Facebook 加载最新的 X 条墙贴,然后如果用户向下滚动,它会加载后面的 X 条贴。 我可以看到您如何获得前 10 个最新的墙贴。像这样的东西: SELECT * FROM wall_po
我尝试使用以下命令提取 Fedora docker 镜像,但失败并出现 Tag latest not found in repository docker.io/library/fedora 错误:
我在德鲁伊有一张 table ,像 Timestamp || UserId || Action 而且我需要为每个 UserId 获取最新的 Action。在 MySQL 中我会做类似的事情 Selec
有人读过 Hickson 2010 年 5 月的 draft-hixie-thewebsocketprotocol-76 WebSocket 协议(protocol)吗? 这是 .htm 文件的来源:
我的构建过程生成了一个 docker 镜像。我希望用标签构建 ID 和“最新”来标记最新的构建镜像。我看到了两种方法。 第一种方法-(添加多个标签并推送一次) docker tag /:build_
我试图从缓冲区读取数据(而不是从文件中读取)以进行实时流式传输。在旧版本的 FFMPEG 中,使用 API“av_open_input_stream”支持它。但在 FFMPEG 版本 2.2.2 中,
编辑:其他容器正常运行。 docker run hello-world 工作正常。 我正在尝试运行最新的 nginx docker 镜像。它无限期地挂起。我已经在 2 个单独的全新安装的 ubuntu
我有一个基本模型,例如: class Stats(models.Model): created = models.DateTimeField(auto_now_add=True) grow
我需要调整以下 XPath 表达式以返回“最新”Amend_Start_Date来自示例 XML(来自 MS InfoPath): //my:Amend_Data[0=count(following-
go version go1.15.2 darwin/amd64 在我的文件夹中,我有两个文件:main.go和 user.go以及其他文件,例如 go.mod , go.sum等等。 尝试从 use
我正在尝试编译 Stygian 的 AzerothCore 重新包装,因为我想添加 Auction House Bot 模块。我已经安装并设置了 Docker,克隆了 repo 并安装了模块和补丁,但
我最近在进行代码审查(针对我的代码),一位架构师在我的 build.gradle 文件中看到了以下内容: dependencies { compile 'org.apache.commons:
我第一次尝试使用 go 模块。以下错误消息到底告诉我什么? module github.com/mkideal/cli@latest found (v0.2.2), but does not cont
我有一个如下的虚拟数据集,它是一个记录每个患者标本结果的数据集: case_id specimen_type_id virus_id specimen_result specime
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
在 Laravel 中,将最后一行记录到数据库表后,我可以通过调用 latest() 查询在记录后立即安全地访问相同的记录数据吗?因为其他用户的交易可能同时发生,而且可能不再是最后一条记录了? 编辑:
我是一名优秀的程序员,十分优秀!