HTML5+CSS3 跨文档消息传输和WebSocket通信
在HTML5中新增了postMessage方法,postMessage可以实现跨文档消息传输。可以通过绑定Window的message事件来监听发送跨文档消息传输内容。
该方法将一个消息放入(寄送)到与指定窗口创建的线程相联系消息队列里,不等待线程处理消息就返回,是异步消息模式。消息队列里的消息通过调用GetMessage和PeekMessage取得。
语法:
B00L PostMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);
上述语法中,参数含义:
● hWnd
其窗口程序接收消息的窗口的句柄。可取有特定含义的HWND_BROADCAST和NULL两个值。其中,HWND_BROADCAST值指消息被寄送到系统的所有顶层窗口,包括无效或不可见的非自身拥有的窗口、被覆盖的窗口和弹出式窗口。消息不被寄送到子窗口。而NULL值表示此函数的操作和调用参数dwThread设置为当前线程的标识符PostThreadMessage函数一样。
● Msg 指定被发送的消息。
● wParam 指定附加的消息特定的信息。
● IParam 指定附加的消息特定的信息。
● 返回值 如果函数调用成功,返回非零值;如果函数调用失败,返回值是零。若想获得更多的错误信息,调用GetLastError函数。
注意: |
需要以HWND_BROADCAST方式通信的应用程序应当用函数RegisterwindwosMessage来获得应用程序间通信的独特的消息。 |
如果发送一个低于WM_USER范围的消息给异步消息函数(PostMessage.SendNotifyMessage,SendMesssgeCallback),消息参数不能包含指针。否则,操作将会失败。函数将再接收线程处理消息之前返回,发送者将在内存被使用之前释放。
WebSocket API是下一代客户端-服务器的异步通信方法。该通信取代了单个的TCP套接字,使用ws或wss协议,可用于任意的客户端和服务器程序。WebSocket目前由W3C进行标准化。
WebSocket API最伟大之处在于服务器和客户端可以在给定的时间范围内的任意时刻,相互推送信息。
WebSocket协议本质上是一个基于TCP的协议。为了建立一个WebSocket 连接,客户端浏览器首先要向服务器发起一个HTTP请求,这个请求和通常的HTTP 请求不同,包含了一些附加头信息,其中附加头信息“Upgrade: WebSocket”表明这是一个申请协议升级的HTTP 请求。
服务器端解析这些附加的头信息然后产生应答信息返回给客户端,客户端和服务器端的WebSocket连接就建立起来了,双方就可以通过这个连接通道自由的传递信息,并且这个连接会持续存在直到客户端或者服务器端的某一方主动的关闭连接。
“Upgrade:WebSocket”表示这是一个特殊的HTTP请求,请求的目的就是要将客户端和服务器端的通讯协议从HTTP 协议升级到WebSocket 协议。
在实际的开发过程中,为了使用WebSocket 接口构建Web应用,首先需要构建一个实现了WebSocke规范的服务器,服务器端的实现不受平台和开发语言的限制,只需要遵从WebSocket 规范即可,目前已经出现了一些比较成熟的WebSocket服务器端实现,比如:
● Kaazing WebSocket Gateway 一个Java实现的WebSocket Server。
● mod_pywebsocket 一个Python实现的WebSocket Server。
● Netty 一个Java实现的网络框架其中包括了对WebSocket 的支持。
● node.js 一个Server 端的JavaScript 框架提供了对WebSocket的支持。
postthreadmessage如果以上的WebSocket 服务端实现还不能满足用户的业务需求的话,开发人员完全可以根据WebSocket 规范自己实现一个服务器。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论