所以,我发现了一个叫做HTML5 WebSockets,新API的神奇之物.这仍然是DRAFT版本,但得到了很好的支持.全双工双向通信.我知道如何通过JavaScript使用它,有API.但是,如果我想在我的C#/ .NET应用程序中使用WebSocket客户端,该怎么做?
例如JavaScript:http://bohuco.net/blog/2010/07/html5-websockets-example/
.NET中的WebSockets是否有任何特殊的客户端库?
我发现Firefox和Chrome之间的浏览器行为与onclose被调用的处理程序有关.
onclose如果它是由用户页面导航/刷新引起的,Chrome似乎不会触发.但是,Firefox确实触发了onclose.
在我看来,Firefox可能在这里表现正常:
当WebSocket连接可能干净地关闭时,用户代理必须创建一个使用CloseEvent接口的事件,事件名称为close,不会冒泡,不可取消,没有默认操作,其wasClean属性设置为true如果连接干净,则为false,否则将其code属性设置为WebSocket连接关闭代码,并将其reason属性设置为WebSocket连接关闭原因; 并将任务排队以首先将readyState属性的值更改为CLOSED(3),然后在WebSocket对象上调度该事件.
来源:http://www.w3.org/TR/2011/WD-websockets-20110419/#closeWebSocket
即使它可能导致一些偷偷摸摸的代码/意外行为.
任何人都可以确认预期的行为吗?
如果您有一个为用户自动重新连接的库,您如何知道是否应该尝试重新连接?你检查CloseEvent.wasClean房产吗?我不得不假设'干净'意味着关闭应该通过API调用WebSocket.close()或服务器发送关闭帧发生?如果网络错误导致关闭,我猜测wasClean会是false什么?
在Pusher JavaScript库中,我们假设(关闭 - >等待 - >连接)关闭应触发重新连接,除非我们处于关闭状态 - 开发人员已选择关闭连接.似乎socket.io客户端库做出了相同的假设.
基于此,由用户导航/刷新引起的Firefox onclose事件触发了不必要的重新连接,因为两个库都没有检查该CloseEvent.wasClean属性.
这是一个可用于演示不一致性的示例:http: //jsbin.com/awonod/7
这是我演示问题的视频:http: //www.screenr.com/vHn8 (已经很晚了,忽略了几个漏洞:))
需要注意的一点是,我按下Escape键也可能导致WebSocket连接关闭.但是,如果您仔细观察或亲自尝试,您将看到在页面刷新之前记录关闭事件.
Caplin等许多Comet实现都提供了服务器可扩展的解决方案
以下是Caplin网站的统计数据之一:
Caplin解释器的单个实例可以支持多达100,000个客户端,每个客户端每秒接收1条消息,平均延迟小于7毫秒.
如何与任何网络服务器上的HTML5 websockets进行比较?任何人都可以指向任何HTML 5 websockets统计信息?
有没有办法使用Web API从ASP.NET网站发送SMS?我知道Web服务,但不知道如何从我的应用程序调用这些服务.
在提出这个问题之前,我做了一些研究,但我无法找到适合我情况的具体答案.
我想创建WebChat,实时同步到服务器上的DB.(MySQL或MongoDB - 一切都还可以)但是关于同步数据的方法很少:
Ratchet的PHP + websockets和我的工作只是通过JSON创建一个协议来进行身份验证和消息传递.许多文档,许多教程.(我知道websockets在IE中不起作用,但无所谓)
node.js + socket.io - 有与1相同的技术解决方案,但是使用不同的语言.
node.js + meteor.js(sockJS) - 似乎人们都做了所有工作,我不需要添加任何协议功能,只需编写逻辑代码.但是高负荷怎么样?文档怎么样......非常年轻的框架.
Tornado + TornadIO2(socket.io)+ RabbitMQ
有人可以将RabbitMQ与meteor.js进行比较吗?按表现.谁能说哪种方式更好?
我不知道所有的框架,所以如果我有比这四个更好的选择,请告诉我:)
请告诉我你的意见.谢谢!
我正在阅读SockJS节点服务器.文件说:
WebSockets通常不能很好地与代理和负载均衡器配合使用.在Nginx或Apache之后部署SockJS服务器可能会很痛苦.幸运的是,最新版本的优秀负载均衡器HAProxy能够代理WebSocket连接.我们建议将HAProxy作为前线负载均衡器,并使用它来分离来自普通HTTP数据的SockJS流量.
我很好奇是否有人可以在这种情况下扩展HAProxy正在解决的问题?特别:
我知道Android和iPhone上的原生移动应用程序有一些简单的方法可以防止手机入睡,但我正在构建一个在移动网络浏览器中运行的移动Web应用程序,并希望探索这种可能性.
我有一种感觉,出于安全考虑,这是不可能的,但我想也许有人想出了一个JavaScript技巧,或者可以在移动浏览器,如移动Safari,Firefox或Opera上运行的东西?
我试图从trial.domain.com连接到server.domain.com上的websocket
Firefox中的NS_ERROR_DOM_SECURITY_ERR:
"[Exception... "Security error" code: "1000" nsresult: "0x805303e8 (NS_ERROR_DOM_SECURITY_ERR)" location: "https://trial.domain.com/home Line: 454"]"
Run Code Online (Sandbox Code Playgroud)
当我尝试建立WebSocket连接时:
try {
if (window['MozWebSocket'] !== undefined) {
socket = new MozWebSocket('ws://server.domain.com/chat');
} else {
socket = new WebSocket('ws://server.domain.com/chat');
}
trails = 0;
} catch(err){
trials++;
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试为社交媒体共享开发Android应用.我知道PubNub如何使用云服务器以快速的速度和安全性共享数据.我想在我的应用程序中使用它.如果有API,请告诉我它是如何工作的.
我不确定我是否正确理解了Pusher 中身份验证的工作原理。这是我担心的一个场景:
第4点有效吗?用户从我的应用程序注销后是否可以使用身份验证令牌?
可以推当应用程序被关闭的消息可以在Android / iOS应用收到或手机处于关机状态?
我期望发生的事情...
当手机和应用程序打开时,从 Pusher 文档中可以很直接地了解如何对发送到应用程序的推送消息做出反应。
当手机打开且应用程序关闭时,手机应收到通知,说明某些内容已发送到应用程序。
当手机关闭时,当手机重新打开时,手机应该会收到一条通知,通知某些内容已发送到应用程序。
这些甚至可能吗?如果是,有什么建议需要注意?如果没有,有什么解决方法?
android push-notification apple-push-notifications ios pusher