Windows Azure 网站上的 WebSocket 简介

news/2024/5/8 15:43:14/文章来源:https://blog.csdn.net/weixin_33911824/article/details/94474482

编辑人员注释:本文章由 Windows Azure 网站团队的首席项目经理 Stefan Schackow 撰写。

Windows Azure 网站最近新增了对 WebSocket 协议的支持。.NET 开发人员和 node.js 开发人员现在可在其应用程序中启用 WebSocket 并加以利用。

网站的 Configuration 选项卡上有一个新的选项,用于为应用程序提供 WebSocket 支持。

 

为网站启用 WebSocket 后,ASP.NET(v4.5 及更高版本)和 node.js 开发人员便可将各自框架的库和 API 与 WebSocket 配合使用。

ASP.NET SignalR聊天示例

SignalR 是一个用于构建实时 Web 应用程序的开源 .NET 库,这些 Web 应用程序需要实时 HTTP 连接才能传输数据。我们提供了一个很棒的站点,其中包含有关 SignalR 库的介绍性文章和详细信息。

由于 SignalR 本身支持将 WebSocket 作为协议,因此 SignalR 是在 Windows Azure 网站上运行连网 Web 应用程序的绝佳选择。例如,您可以在 Windows Azure 网站上运行此示例聊天应用程序

以下快照显示了 SignalR 聊天示例的结构:

在 Windows Azure 网站中创建 Web 应用程序、为应用程序启用 WebSocket 并上传 SignalR 聊天示例之后,即可在 Windows Azure 网站上运行自己专属的迷你聊天室!

Fiddler 的原始 HTTP 跟踪(如下所示)显示了 SignalR 客户端发送的 WebSocket 协议升级请求如何与 Web 服务器协商 WebSocket 连接:

Request snippet:
GET 

https://sigr-chat-on-waws.xxxx.net/signalr/connect?transport=webSocketssnip HTTP/1.1
Origin:https://sigr-chat-on-waws.xxxx.net
Sec-WebSocket-Key:hv2icF/iR1gvF3h+WKBZIw==
Connection:Upgrade
Upgrade:Websocket
Sec-WebSocket-Version:13

Response snippet:
HTTP/1.1 101 Switching Protocols
Upgrade:Websocket
Server:Microsoft-IIS/8.0
X-Content-Type-Options:nosniff
X-Powered-By:ASP.NET
Sec-WebSocket-Accept:Zb4I6w0esmTDHM2nSpndA+noIvc=
Connection:Upgrade

要了解有关利用 SignalR 构建实时 Web 应用程序的更多信息,请参阅 SignalR 概述网站上的扩展教程

ASP.NET Echo 示例

ASP.NET 自 .NET Framework v4.5 起即为 WebSocket 提供支持。开发人员通常希望使用更高级别的库(如 SignalR),以封装管理 WebSocket 连接的低级别详细信息。但是,对于勇于探索的开发人员,本节显示了一个在 ASP.NET 中使用低级别 WebSocket 支持的简短示例。

ASP.NET Echo 示例项目包含一个可侦听并响应 WebSocket 的服务器端 .ashx 处理程序和一个可建立 WebSocket 连接并将文本发送到服务器的简单 HTML 页面。

.ashx 处理程序可侦听 WebSocket 连接请求:

.ashx 处理程序可侦听 WebSocket 连接请求:

建立 WebSocket 连接后,处理程序会将文本返回到浏览器:

对应的 HTML 页面将在加载页面时建立 WebSocket 连接。当浏览器用户通过 WebSocket 连接发送文本时,ASP.NET 会返回输入的文本。

以下快照显示了一个浏览器会话,返回了输入的文本然后关闭WebSocket 连接。

Node.js 基本聊天示例

Node.js 开发人员对于使用 socket.io 库编写需要长时间运行的 HTTP 连接的网页非常熟悉。socket.io 支持将 WebSocket(及其他选项)作为网络协议,并且可将其配置为使用 WebSocket 进行传输(如果可用)。

Node.js 应用程序应该包括 socket.io 模块,然后在代码中配置socket:

如下所示的示例代码可侦听要使用昵称(例如聊天处理)连接的客户端,并将聊天消息广播到当前连接的所有客户端。

在 web.config 中,使用 WebSocket 的 node.js 应用程序需要进行以下小调整:

该web.config 条目将关闭 IIS WebSocket 支持模块 (iiswsock.dll),因为 node.js 不需要此模块。IIS 上的 nodej.js 包括自己的低级别 WebSocket 实现,这正是需要关闭 IIS 支持模块的原因所在。

但请记住,仍需使用本文先前所示的 UI 中的 Configuration 门户选项卡为您的网站启用 WebSocket 功能。

如果两个客户端均已连接并且已使用示例 node.js 应用程序交换消息,HTML 输出将如下所示:

Fiddler 的原始 HTTP 跟踪(如下所示)显示了 socket.io 客户端发送的 WebSocket 协议升级请求如何与 Web 服务器协商 WebSocket 连接:

Request snippet:
GET

https://abc123.azurewebsites.net/socket.io/1/websocket/11757107011524818642HTTP/1.1
Origin:https://abc123.azurewebsites.net
Sec-WebSocket-Key:rncnx5pFjLGDxytcDkRgZg==
Connection:Upgrade
Upgrade:Websocket
Sec-WebSocket-Version:13

Response snippet:
HTTP/1.1 101 Switching Protocols
Upgrade:Websocket
Server:Microsoft-IIS/8.0
X-Powered-By:ASP.NET
Sec-WebSocket-Accept:jIxAr5XJsk8rxjUZkadPWL9ztWE=
Connection:Upgrade

WebSocket 连接限制

当前,Azure 网站已对每个运行的网站实例支持的并发 WebSocket 连接数实施限制。每种伸缩模式下每个网站实例支持的 WebSocket 连接数如下所示:

·   免费:每个网站实例支持 (5) 个并发连接

·   共享:每个网站实例支持 (35) 个并发连接

·   标准:每个网站实例支持 (350) 个并发连接

如果您的应用程序试图打开超过允许限制的 WebSocket 连接,Windows Azure 网站将返回 503 HTTP 错误状态代码。

注意:术语“网站实例”指的是,如果您的网站调整为在 (2) 个实例上运行,则计为 (2) 个运行的网站实例。

您可能需要对 WebSocket 使用 SSL!

当使用 WebSocket 时,开发人员需要牢记一点。WebSocket 协议依赖于某些不常用的 HTTP 头,尤其是Upgrade头,因此中间网络设备(如 Web 代理)将这些头剔除并不足为奇。最终的结果通常让开发人员灰心丧气且满腹疑问:WebSocket 应用程序为何不运行,或不选择 WebSocket,却反而选择了效率更低的替代解决方案。

解决此问题的窍门是通过 SSL 建立 WebSocket 连接。要完成此操作,请执行以下两个步骤:

·   针对 WebSocket 端点使用 wss:// 协议标识符。例如,不要连接到 ws://mytestapp.azurewebsites.net(通过 HTTP 的 WebSocket),而要连接到 wss://mytestapp.azurewebsites.net(通过 HTTPS 的 WebSocket)。

·   (可选)同时通过 SSL 运行使用WebSocket的页面。有时不需要执行此操作,但根据您使用的客户端框架,对包含 HTML 页面的 SSL 设置可能会使 WebSocket 连接具备 SSL 功能。

Windows Azure 网站通过使用 *.azurewebsites.net 的默认 SSL 证书为 SSL 提供支持,甚至包括在免费站点上。因此,您无需配置自己的 SSL 证书来解决此问题。对于 azurewebsites.net 下的 WebSocket 端点,您只需要切换为使用 SSL,此时将自动使用 *.azurewebsites.net 通配符 SSL 证书。

您还可以为网站注册自定义域,然后配置站点的 SNI 证书或基于 IP 的 SSL 证书。有关配置自定义域以及 Windows Azure 网站的 SSL 证书的详细信息,请参考 Windows Azure 文档网站。

本文翻译自:

http://blogs.msdn.com/b/windowsazure/archive/2013/11/14/introduction-to-websockets-on-windows-azure-web-sites.aspx

 

 

 

转载于:https://www.cnblogs.com/sesexxoo/p/6191091.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_715563.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

树状结构搜索功能_如何让网站被搜索引擎索引收录(2)

想要让网站被搜索引擎索引收录,那就要建立一个易于被搜索引擎识别、索引,并且能够呈现在移动端的网站。下面,我们就从域名、服务器、网页加载速度、网站结构、url结构、PC端和移动端的适配、网站收录、网页过滤与数据库建设等八个方面进行讲解…

在网站开发中很有用的8个 jQuery 效果【附源码】

jQuery 作为最优秀 JavaScript 库之一,改变了很多人编写 JavaScript 的方式。它简化了 HTML 文档遍历,事件处理,动画和 Ajax 交互,而且有成千上万的成熟 jQuery 插件可供使用。看看下面这些惊人的功能和效果,我相信你会…

网站开放平台发布-开创应用个人创业

为什么80%的码农都做不了架构师?>>> 创新与发明不一样,创新也许是在模仿上面的一个升级。我打造的医药吧开放平台就是 想开发更多的创新应用,这里也想分享一下开放医药吧网API接口的目的。 医药吧网站的API接口的开放是一个模块…

英语学习网站

栏目位置:首页> 英语学习频道> VOA Special English 听歌说词(Catch The Words)你喜欢音乐吗?你想听懂英语排行榜金曲的歌词并跟着唱吗?那就和我们的主持人一起来听歌说词。这套节目节选了24首60到90年代的英美排行榜上榜金曲&#xff…

利用IIS日志追查网站入侵者

以前黑站黑了很多,但是就没有想过会不会被追踪到,都没有想过怎么去擦自己的屁股,万万没想到在自己不再黑站的时候,却发现了自己的BBS被黑了。根据当初的判断,BBS程序是我们BCT小组成员编写的Lvbbs不会存在着上传漏洞和…

网站首页图片动态更换显示【Javascript】

以前写过一篇网站首页图片动态更换显示【Flash】 ,主要是介绍了一下网站首页常见的图片新闻更换程序。今天上网发现一个用Javascript脚本写的,效果也很是不错,来看一下:跟Flash版的几乎一样,看一下代码吧,主…

关于网站子目录绑定二级域名的方法(php网站手机端)

最近帮客户做zencart网站手机模板用到了二级域名,通过判断手机访问来调用二级目录程序,http://afish.cnblogs.com/ 怎么说都比 http://www.cnblogs.com/afish/ 看着舒服如果你的主机空间支持子目录绑定二级域名,这里介绍的是子目录绑定二级域…

今天打开一个网站 FSO对象实例创建失败

马克斯程序或asp程序stream对象实例创建失败解决办法现在越来越多的网站使用动态生成静态页的技术,就是信息在写入数据库的同时,使用系统的FSO组件来生成html格式的静态页,这样能提高用户的访问速度。这样系统在配置的时候,需要载…

【原创】Crystal report 实现打印-网站开发手记

最近开发电子商务系统&#xff0c;里边用到报表打印&#xff0c;批量打出订单&#xff0c;以前没有接触过报表&#xff0c;更别说打印了&#xff0c;今天搞定后&#xff0c;那来与大家交流。源代码如下&#xff1a;aspx:1<% Page Language"C#"AutoEventWireup&quo…

恐怖绝伦,SOPA和PIPA捅了网站窝!

今天刚一上外网&#xff0c;愕然发现N个网站同时出现了类似如下文字&#xff1a;Join the largest online protest in history: tell the US Congress to stop SOPA and PIPA now! 粗译成中文&#xff0c;即&#xff1a;加入有史以来最大的网上抗议&#xff0c;告诉美国国会&am…

stack overflow--技术问答网站

转自&#xff1a;http://baike.baidu.com/link?urleMR6Pwdk9IkauI5B3nZb2Yo3VUAcK6vQfrMpcSMPWqgH0ngqFkup3Gdr3t_s_yZe_UFwkR8c1pboaxhEuY-iwF_nGiUYHajEPMO6Y1kqWvT8aPz7a_T6t3a1vxyTccgKl_UIx1cU-6IP7qjre2ijtq Stack Overflow是一个与程序相关的IT技术问答网站。用户可以在…

多媒体开发之分场图像和交错图像interlacing---一个破解版的迅雷云点播网站

[-] 目录编辑描述编辑去交错方法编辑去交错源自电影的影像编辑去交错交错式影像编辑单一场去交错intra-field deinterlacing编辑场间去交错inter-field deinterlacing编辑动态适应性去交错motion adaptive deinterlacing编辑动态补偿去交错motion compensated deinterlacing编辑…

在RHEL5下构建LAMP网站服务平台之架设Discuz!论坛

安装Discuz!论坛程序所需安装包&#xff1a;Discuz_6.1.0_SC_UTF8.zip 和 UCenter_1.0.0_SC_UTF8.zip源码包下载地址&#xff1a;http://www.discuz.net 1.建立用于bbs论坛的数据库bbsdb及用户linux5234&#xff1a;#mysql -u root -p mysql>create database bbsdb; my…

PS网页设计教程III——在Photoshop中设计优雅的网站布局设计

作为编码者&#xff0c;美工基础是偏弱的。我们可以参考一些成熟的网页PS教程&#xff0c;提高自身的设计能力。套用一句话&#xff0c;“熟读唐诗三百首&#xff0c;不会作诗也会吟”。 本系列的教程来源于网上的PS教程&#xff0c;都是国外的&#xff0c;全英文的。本人尝试翻…

网站性能愈来愈差怎么办?

新的一年&#xff0c;你的老板或客户&#xff0c;是否曾和你抱怨公司的网站性能愈来愈差&#xff1f;网站大家都会写&#xff0c;自从有了 Visual Studio 之后&#xff0c;连你家楼下的正妹小喵和隔壁的王大婶都会写 ASP.NET。但同样的一个画面&#xff0c;背后的性能却可能是天…

欢迎访问我的个人网站

2019独角兽企业重金招聘Python工程师标准>>> 欢迎访问我的个人网站&#xff1a;肖国栋的 i 自留地。 由于两边更新比较麻烦&#xff0c;一些修改不再同步到这边。 转载于:https://my.oschina.net/goldenshaw/blog/875030

大型网站的 HTTPS 实践(二):HTTPS 对性能的影响

大型网站的 HTTPS 实践&#xff08;二&#xff09;&#xff1a;HTTPS 对性能的影响 1 前言 HTTPS 在保护用户隐私&#xff0c;防止流量劫持方面发挥着非常关键的作用&#xff0c;但与此同时&#xff0c;HTTPS 也会降低用户访问速度&#xff0c;增加网站服务器的计算资源消耗。 …

通过pfSense阻止对某个网站的访问

防火墙阻止对某个网站的访问是基本功能&#xff0c;在pfSense上阻止对某个网站的访问&#xff0c;通常可以通过别名和设置防火墙规则来完成。在本例中&#xff0c;我们来尝试阻止对新浪网&#xff08;www.sina.com&#xff09;的访问。查找域名解析地址添加别名设置防火墙规则检…

HTML5+CSS3+jQuery Mobile轻松构造APP与移动网站 (陈婉凌) 中文pdf扫描版

《HTML5CSS3jQuery Mobile轻松构造APP与移动网站》以HTML与CSS为主&#xff0c;配合jQuery制作网页&#xff0c;并搭配jQueryMobile制作移动网页&#xff0c;通过具体的范例从基础到高级循序渐进地讲解。全书首先介绍了HTML5网页开发和CSS网页美化&#xff0c;只要按本书的顺序…

如何在最段的时间内让搜索引擎收录一个新网站?

对于搜索引擎收录新网站真的没有一个准确的时间&#xff0c;有时快有时慢&#xff0c;快的建站当天就收录&#xff0c;慢的几个月都不被收录。虽然收录有快有慢&#xff0c;但我们也可以通过操作来加快搜索引索的收录。下面总结了一些方法或是技巧供大家参考&#xff01; 一、网…