websocket学习-持续更新

服务端nodejs

客户端js

首先,服务端代码

创建一个server.js

var clients = [];
var uuid=require('node-uuid');
var WebSocketServer = require('ws').Server,
    wss = new WebSocketServer({port:8181});

wss.on('connection',function(ws){
	var client_uuid=uuid.v4();
	var nickname=client_uuid.substr(0,8);
	clients.push({"id":client_uuid,"ws":ws,"nickname":nickname});
	console.log('client [%s] connected',client_uuid);
	ws.on('message',function(message){
		for(var i=0;i<clients.length;i++){
			var clientSocket=clients[i].ws;
			console.log('client [%s]:%s',clients[i].id,message);
			clientSocket.send(JSON.stringify({
				"id":client_uuid,
				"message":message
			}));
		}
	});


	ws.on('close',function(){
		for(var i=0;i<clients.length;i++){
			if(clients[i].id==client_uuid){
				console.log('client [%s] disconnected',client_uuid);
				clients.splice(i,1);
			}
		}
	})
}) 

我上面在最基础的功能上增加了用户ID。

客户端代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

<title>websocket</title>
<link rel="stylesheet" href="css/demo.css" type="text/css" />
<meta charset="utf-8">
</head>

<body>
<div id="header">
	
</div>
<div id="main">
    <div id="body" class="light">
    	<div id="content" class="show">          
            <div class="demo">
            	<form id="uploadForm"  enctype="multipart/form-data">
                    <div class="upload_box">
                        <div class="upload_choose">
                            <input id="message" type="text" size="30" name="fileselect[]" multiple />
                        </div>
                        <div class="upload_submit">
                            <button type="button" id="fileSubmit" class="upload_submit_btn" οnclick="sendMessage()">发送</button>
                        </div>
                        <div class="upload_choose">
                            <div id="messagebox" ></div>
                        </div>
                    </div>
                </form>
            </div>
        </div>       
    </div>
</div>

<script src="http://libs.baidu.com/jquery/1.4.4/jquery.js"></script>

<script>
var ws =new WebSocket("ws:localhost:8181");
ws.onopen = function(e){
	console.log('connection to server opened');	
}
ws.onmessage = function(e){
	var data=JSON.parse(e.data);
	var message=document.createElement("li");
	message.innerHTML= data.message;
	document.getElementById('messagebox').appendChild(message);
}

ws.οnerrοr=function(e){
	console.log("websocket failure,error",e);
	//handleErrors(e);
}

ws.onclose=function(e){
	console.log(e.reason+""+e.code);
}

//ws.close(1000,'websocket closed');
function sendMessage(){
	ws.send($('#message').val());
}
</script>
</body>
</html>

用cmd启动服务器server.js


客户端聊天画面


现在只是暂时实现了聊天功能,等我慢慢把视频。表情都做出来了,下阶段再见!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值