Web Sockets

浏览器API 。Web Sockets的目标是在一个单独的持久连接上提供全双工,双向通信。

 //要创建Web Sockets,先实例化一个websockets对象并传入要连接的的URL:
 var socket = new Web Sockets("ws://www.123.com/server.php");
//注意:必须给websockets构造函数传入绝对URL。同源策略对Web Sockets不适用,
//因此可以通过它打开任何站点的连接。至于是否与某个域名的页面通信,则完全取决于服务器。
//实例化了websocket对象后,浏览器就会马上尝试创建连接。与XHR类似,websockets也有一个表示
//当前状态的readyState属性。不过这个属性的值与XHR并不相同。
WebSocket.OPENING(0):正在建立连接。
WebSocket.OPEN(1):已经建立连接。
WebSocket.CLOSEING(2):正在关闭连接。
WebSocket.CLOSE(3):已经关闭连接。
// WebSocket没有readystatechange事件;不过,他有其他事件,对应着不同的状态。readyState的值永远从0开始。

 2. 发送和接受数据

Web Sockets打开之后,就可以通过连接发送和接受数据。要向服务器发送数据,使用send()方法并传入任意字符串。

var socket = new Web Sockets("ws://www.123.com/server.php");
socket.send("hello")

因为Web Sockets 只能通过发送纯文本数据,所以对于复杂数据类型数据结构,咋通过连接发送之前,必须进行序列化。

当服务器想客户端放来消息时,websocket对象就会触发message事件。这个meeage事件与其他传递消息的协议类似,也是把返回的数据保存在event.data属性中。

 socket.onmeeage = function (event) {
     var data = event.data;
     // 处理数据	
 } // 与通过send()发送到服务器的数据一样。event.data中返回的数据也是字符串。如果想得到其他格式的数据,必须手工解析这些数据。

 3. 其他事件

WebSocket 对象还有其他三个事件,在连接生命周期的不同阶段触发。

open: 在成功建立连接时触发。

error:在发生错误是触发,连接不能持续。

close:在连接关闭时触发。


阅读更多

SOCKETS?

05-09

程序界面 一个MEMO 两个按钮 (一个LISTING 一个SEND)rn程序功能 当按下LISTING时 程序处于LISTING状态rn 当按下LISTING时 程序可以发送BUF(MEMO)的数据到处于LISTING状态的电脑上!rnrn帮我 看看这段代码又什么问题? rnrn//---------------------------------------------------------------------------rnrn#include rn#pragma hdrstoprnrn#include "Unit1.h"rn#include rn//---------------------------------------------------------------------------rn#pragma package(smart_init)rn#pragma resource "*.dfm"rnTForm1 *Form1;rn//---------------------------------------------------------------------------rnWSADATA ws; rnSOCKET sock; rnstruct sockaddr_in server_addr;rnrnrn//---------------------------------------------------------------------------rn__fastcall TForm1::TForm1(TComponent* Owner)rn : TForm(Owner)rnrnrn//---------------------------------------------------------------------------rnrnvoid __fastcall TForm1::Onlisten(void)rnrn int bindflag,acceptflag,listenflag;rn int iResult;rn long lResult;rn char strSubAddr[100], strBuffer[100];rnrn lResult = WSAStartup(0x0101,&ws);rn sock = socket(AF_INET,SOCK_STREAM,0);rn if(sock<0)rn ShowMessage("error!");rn server_addr.sin_family=AF_INET;rn server_addr.sin_addr.s_addr=INADDR_ANY;//本机地址rn server_addr.sin_port=htons(10000);rnrn bindflag=bind(sock,(struct sockaddr *)&server_addr,sizeof(struct sockaddr));rnrn listenflag=listen(sock,2);//最大连接数据为2rnrn if(listenflag<0)rn rn ShowMessage("接受连接失败");rn exit(1);rn rn elsern ShowMessage("Listing");rn acceptflag=accept(sock,NULL,NULL);//nullrn if(acceptflag<0)rn ShowMessage("接受连接失败");rn //MessageBox("接受连接失败","出错",MB_ICONERROR);rnrnvoid __fastcall TForm1::ButtonSendClick(TObject *Sender)rnrn send(connectflag,"************欢迎来到************",100,0);rnrn//---------------------------------------------------------------------------rnvoid __fastcall TForm1::ButtonListenClick(TObject *Sender)rnrn Onlisten();rnrn//

没有更多推荐了,返回首页