websocket(二)——基于node js 的同步聊天应用
https://github.com/sitegui/nodejs-websocket
1.用node搭建本地服务
npm install nodejs-websocket
	var ws = require("nodejs-websocket");
	var server = ws.createServer(function(conn){
	console.log('New Connection!');
	conn.on('text',function(str){
		console.log('receive' + str);
		conn.sendText(str.toUpperCase() + '!!!');
	})
	conn.on('close',function(code,reason){
		console.log('Connection closed');
	})
	//服务出现错误时用来处理错误,如果不加出现错误服务就会挂掉
	// conn.on('error',function(err){
	// 	console.log('handle error');
	// 	console.log(err);
	// })
	}).listen('3000');
	console.log('node websocket run listening on port 3000')
客户端代码实现
	<!DOCTYPE html>
	<html lang="en">
		<head>
   		 	<meta charset="UTF-8">
    		<title>websocket测试</title>
   		    <style>
   				 input {
       	         outline: none;
                }
    			.content {
        		margin-top: 20px;
        		width: 300px;
      			min-height: 100px;
      		    border: 1px solid blue;
    			}
    	</style>
	</head>
	<body>
    	<h3>websocket演示</h3>
   	    <input type="text" id='txt'>
        <button id='sendTxt'>发送</button>
        <div class='content' id='receiveMsg'></div>
    	<script>
    		var websocket = new WebSocket('ws://localhost:3000/');
   		    websocket.onopen = function() {
            console.log('websocket open');
            document.getElementById('receiveMsg').innerHTML = 'Connected';
            };
            websocket.onclose = function() {
            console.log('websocket close');
            };
            websocket.onmessage = function(e) {
            console.log(e);
            document.getElementById('receiveMsg').innerHTML = e.data;
           };
    	   document.getElementById('sendTxt').onclick = function() {
           var txt = document.getElementById('txt').value;
           websocket.send(txt);
         };
    </script>
</body>
</html>
简单的websocket应用,只是将客户端收到的信息发送到服务端,将原字符串转化为大写后加上三个!!!后返回;
改进后的代码如下:
服务端代码:

客户端代码:

有点:加入了进入聊天室,离开聊天室等字段,并对每一个连接的客户端做了简单的区分;
缺点:服务端和客户端只是简单的基于字符串的交互,没有对数据的属性进行区分,相对简单;
服务端代码:

客户端代码:

有点:在服务端对消息的属性进行了包装,并在客户端进行不同效果的展示,在服务端需要将对象转化为字符串才能发送到客户端,不够灵活;
最终效果:





websocket(二)——基于node js 的同步聊天应用的更多相关文章
- 《基于Node.js实现简易聊天室系列之详细设计》
		
一个完整的项目基本分为三个部分:前端.后台和数据库.依照软件工程的理论知识,应该依次按照以下几个步骤:需求分析.概要设计.详细设计.编码.测试等.由于缺乏相关知识的储备,导致这个Demo系列的文章层次 ...
 - 《基于Node.js实现简易聊天室系列之引言》
		
简述:这个聊天室是基于Node.js实现的,完成了基本的实时通信功能.在此之前,对node.js和mongodb一无所知,但是通过翻阅博客,自己动手基本达到了预期的效果.技术,不应该是闭门造车,而是学 ...
 - 《基于Node.js实现简易聊天室系列之总结》
		
前前后后完成这个聊天室的Demo花了大概一个星期,当然一个星期是仅仅指编码的工作.前期的知识储备是从0到1从无到有,花费了一定的时间熟悉Node.js的基本语法以及Node.js和mongoDB之间的 ...
 - 《基于Node.js实现简易聊天室系列之项目前期工作》
		
前期工作主要包括:项目的创建,web服务器的创建和数据库的连接. 项目创建 网上关于Node.js项目的创建的教程有很多,这里不必赘述.Demo所使用的Node.js的框架是express,版本为4. ...
 - 《基于Node.js实现简易聊天室系列之环境搭建》
		
前文提到了Demo所涉及的技术,现在讲环境(工具)的配置.环境的配置主要是数据库mongDB和Node.js的配置. Node.js Node.js的官方地址:https://nodejs.org/e ...
 - 基于Node.js + WebSocket 的简易聊天室
		
代码地址如下:http://www.demodashi.com/demo/13282.html Node.js聊天室运行说明 Node.js的本质就是运行在服务端的JavaScript.Node.js ...
 - 基于node.js 的 websocket的移动端H5直播开发
		
这一篇介绍一下基于node.js 的 websocket的移动端H5直播开发, 下载文章底部的源码,我是用vscode打开, 首先在第一个终端运行 npm run http-server 这个指令是运 ...
 - 基于Node.js的实时推送 juggernaut
		
基于Node.js的实时推送 juggernaut Juggernaut 基于 Node.js 构建.为浏览器和服务器端提供一个实时的连接,可在客户端和服务器端进行数据的实时推送,适合多角色游戏.聊天 ...
 - 基于node.js制作爬虫教程
		
前言:最近想学习node.js,突然在网上看到基于node的爬虫制作教程,所以简单学习了一下,把这篇文章分享给同样初学node.js的朋友. 目标:爬取 http://tweixin.yueyishu ...
 
随机推荐
- EntityFramework Code-First 简易教程(九)-------一对多
			
一对多(One-to-Many)关系: 下面,我们来介绍Code-First的一对多关系,比如,在一个Standard(年级)类中包含多个Student类. 如果想了解更多关于one-to-one,o ...
 - 解决SQL Server本地Windows身份无法登录
			
CREATE LOGIN [计算机名\Windows帐户名] FROM WINDOWS
 - Unity LayerMask 的位运算
			
Unity的Layer Unity是用 int32来表示32个Layer层,int32用二进制来表示一共有32位. 0000 0000 0000 0000 0000 0000 0000 0000 31 ...
 - PHP 截取字符串乱码的解决方案
			
今天遇到一个坑,左右调试坑的我一脸懵逼,当我们对一条字符串进行截取的时候,通常第一个想到的就是substr()函数了,但是如果是中文+数字的字符串的话,这时候使用substr进行截取就会出现乱码的问题 ...
 - ABAP 中JSON格式的转换与解析
			
RT,JSON是当今十分流行的一种轻量数据格式,广泛地应用于各种数据交换场景中.本文会介绍一种比较简单的将ABAP中的数据转换为JSON格式的方法. (如果你是因为引号的问题搜索到了这篇文章,请直接拉 ...
 - eclipse添加插件实现php的增删改查
			
一:eclipse添加php插件 1.运行eclipse,在主界面里找到Help下的“Instal New Software”.然后在Work with中选择“All Available Sites” ...
 - C#的深拷贝和浅拷贝
			
也许会有人这样解释C# 中浅拷贝与深拷贝区别: 浅拷贝是对引用类型拷贝地址,对值类型直接进行拷贝. 不能说它完全错误,但至少还不够严谨.比如:string 类型咋说? 其实,我们可以通过实践来寻找答案 ...
 - sql server 压缩备份数据库
			
转自 https://www.cnblogs.com/527289276qq/p/6273291.html 今天需要把一个省外项目的数据库从服务器上备份.拷贝到本机(跨地域传输数据库备份文件). 连上 ...
 - http协议以及get和post请求
			
HTTP协议是网络传输信息的一种规范. 就好比两个人之间的交流,甲只会讲英语,乙只会说汉语,结果是他们必然无法开怀畅谈. HTTP协议也类 GET 请求获取 Request-URI 所标识的资源 ...
 - ASP.NET 加密解密
			
1.MD5 2.DES 一 MD5 介绍:MD5是不可逆解密方式,比如对密码的加密,为了保密,让密码不能解密 public static string MD5Encrypt(string str) { ...