web-socket

优势:1)、持续数据连接

           2)、全双工作方式

           3)、2byte的通信:1byte定义开始、1byte定义字长

客户端:

发送协议

           ——ws://普通web-socket

           ——wss:://加密web-socket

创立连接:

             var ws,currentUser,ele;

             window.onload= function(){    //一定是在web加载的时候就被创立

             ws = new WebSocket("ws://myserver:8887");

ws.open = function(){    //连接建立成功,open事件将被调用

$("status").innerHTML = 'online';

$("status").style.color = 'green';

ws.onmessage = function(e){     //消息接收成功,会唤醒此函数

var msg;

try{     //拆分获得数据的方法

msg = JSON.parse(e.data);     //json去解析

}catch (SyntaxError){

$("debug").innerHTML = "invalid message";

return false;

}

发送消息:

function sendmsg(){

ws.send($("ta").value);    //采用websocket中的send方法发送数据

}

ws.onclose = function(e){

$("status").innerHTML = 'offline';

$("status").style.color = 'red';

};

window.onunload = function(){    //把这个事件真正的close掉,页面关闭

ws.close();

};

客户端发送数据给了服务器,那么服务器也需要将被请求的数据返回给用户。

服务器端:最近notejs下载地址:http://nodejs.org/

创建连接:

var ws = require(_dirname + '/lib/ws');    //创建类库

server = ws.createServer();

var user_cols = {};

server.addListener("connection",function(conn)){    //添加一个listener,监听connection事件

var h = conn._server.manager.length*70;

user_cols[conn.id] = "hsl("+h+",100%,30%)";

var msg = {};    //创建message对象,虽然是空的,但是后面三项已经定义了这个对象的属性

msg.user = conn.id;

msg.color = user_cols[conn.id];

msg.text = "<em>A new user has entered the chat</em>";

conn.broadcast(JSON.stringify(msg));     //对所有客户端广播推送,通过JSON序列化

监听用户的广播:

             conn.addListener("message",function(message)){    //监听收到新的事件,就会唤醒message

             var msg = {};     //拿到新的信息后,会做脚本处理,防止注入js脚本***

message = message.replace(/</g,"&lt;");

message = message.replace(/</g,"&gt;");

             msg.text = message;

             msg.user = conn.id;

             msg.color = user_cols[conn.id];

             conn.write(JSON.stringify(msg));    //使用JSON序列化之后广播

             conn.broadcast(JSON.stringify(msg));

             });

             });

关闭连接:

             server.addListener("close",function(conn)){

             var msg = {};

             msg.user = conn.id;

             msg.color = user_cols[conn.id];

             msg.text = "<em>A user has left the chat</em>";

            conn.broadcast(JSON.stringify(msg));

             });

             server.listen(8887);