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 ...
随机推荐
- 4.91Python数据类型之(6)元组
前言 有时候,我们为了数值的安全性,不许用户修改数据,今天我们就来讲讲关于python不可变的数据类型--- 元组数据 目录 1.元组的基本定义 2.元组的基本操作 (一)元组的基本定义 1.元组的概 ...
- creo5.0安装教程(图文详解)
PTC公司最近发布了Creo 5.0正式版 ,作为最具其革命性的新一代产品设计软件,其所提供专业的二维和三维设计设计,能帮助企业和公司进行产品生命周期管理(PLM)和制定服务管理解决方案.Creo5. ...
- Java设计模式之九 ----- 解释器模式和迭代器模式
前言 在上一篇中我们学习了行为型模式的责任链模式(Chain of Responsibility Pattern)和命令模式(Command Pattern).本篇则来学习下行为型模式的两个模式, 解 ...
- Vue表单修饰符(lazy,number,trim)
lazy:使用了这个修饰符将会从“input事件”变成change事件进行同步 <div id="example"> <input type="text ...
- 控件布局_FrameLayout(网格布局)
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools=&qu ...
- 控件布局_TableLayout
<?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android=" ...
- 全文索引搜索whoosh
问题 Whoosh是python中解决索引查找的模块,在讨论索引查找的文章已经对有关索引查找进行了阐述,此处具体说明Whoosh模块的应用. 思路说明 Whoosh的安装 这里有具体内容(链接被被阉割 ...
- HTML5 canvas getImageData() 方法
下面的代码通过 getImageData() 复制画布上指定矩形的像素数据,然后通过 putImageData() 将图像数据放回画布: var c=document.getElementById(& ...
- 【SpringMVC】关于classpath和contextConfigLocation
[SpringMVC]关于classpath和contextConfigLocation 2017年11月16日 12:05:47 yongh701 阅读数:3624 版权声明:本文为博主原创文 ...
- TStack与IBM LinuxONE通过兼容性认证
近日,腾讯云TStack与IBM LinuxONE通过兼容性认证,通过腾讯云TStack,可实现便捷管理IBM LinuxONE服务器.这为腾讯和IBM在未来多方面的商业合作奠定了坚实基础,也为腾讯云 ...