Nodejs实现WebSocket代码实例


Posted in NodeJs onMay 19, 2020

一、环境配置

1.下载安装nodejs https://nodejs.org/en/download/

2.安装完成后打开cmd命令,执行node --version,看看是否安装成功,如果提示没有此命令,去配置下环境变量,正常情况下安装后自动设置环境变量

二、配置nodejs模块

1.安装express模块

模块介绍:Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具。

  安装方式:在项目路径下执行npm install express

三、HelloWord

1.创建一个目录,作为项目目录

2.创建一个demo.js

 

var express = require('express'),//让其变为web模式
  app = express(),
  server = require('http').createServer(app);//引入http访问模式并绑定服务
  server.listen(8000);//添加访问端口
  app.get('/', function (req, res) {
   res.send('Hello World');//当访问Ip:8000时,页面即可显示
})

3.在项目目录下按住shift右键,选择‘在此处打开命令窗口'执行node demo.js 未报错即启动成功

4.在浏览器访问ip:port即可输出

四、访问页面

1.在项目路径创建页面文件夹pages,并创建html页面a.html

2.在刚刚创建的demo.js中添加如下代码

var express = require('express'),//让其变为web模式
  app = express(),
     server = require('http').createServer(app);//引入http访问模式并绑定服务
     server.listen(8000);//添加访问端口
     app.use('/', express.static(__dirname + '/pages'));//绑定页面路径,在pages下创建a.html页面,可使用ip:8000/a.html访问到
     //app.use('/', express.static(__dirname + '/pages1'));//可配置多路径,但默认会自上往下查找,找到后即返回,终止查找
     app.get('/', function (req, res) {
      res.send('Hello World');//当访问Ip:8000时,页面即可显示
 })

3.重启后访问ip:port/a.html即可访问到该页面

五、引用其他js

1.在项目根目录创建include.js,内容如下

var hello = {
  sayHello:function(name){  
       return 'hello,'+name+',this is include.js';
  }
}
module.exports=hello;

2.在demo.js中添加

var express = require('express'),//让其变为web模式
  app = express(),
  include =require('./include.js'),//进入js
  server = require('http').createServer(app);//引入http访问模式并绑定服务
  server.listen(8000);//添加访问端口
  app.use('/', express.static(__dirname + '/pages'));//绑定页面路径,在pages下创建a.html页面,可使用ip:8000/a.html访问到. "__dirname"为项目路径默认变量
    app.get('/', function (req, res) {
   res.send(include.sayHello("demo"));
  })

六、解析请求参数

1.在demo.js中添加后请求链接http://ip:port/?p1=p&p2=2

var express = require('express'),//让其变为web模式
  app = express(),
  url = require('url'),
  server = require('http').createServer(app);//引入http访问模式并绑定服务
  server.listen(8000);//添加访问端口
  app.use('/', express.static(__dirname + '/pages'));//绑定页面路径,在pages下创建a.html页面,可使用ip:8000/a.html访问到. "__dirname"为项目路径默认变量
  app.get('/', function (req, res) {
 
   // 解析 url 参数
  var params = url.parse(req.url, true).query;
  res.write("网站名:" + params.p2);
  res.write("\n");
  res.write("网站 URL:" + params.p1);
  res.end();
  })

七、发送http请求

1.post

在demo.js中添加如下内容后访问http://mykl:8000/? parameter=2

var express = require('express'),//让其变为web模式
  app = express(),
  url = require('url'),
  util = require('util'),
  include =require('./include.js'),
  server = require('http').createServer(app);//引入http访问模式并绑定服务
  server.listen(8000);//添加访问端口
  app.use('/', express.static(__dirname + '/pages'));//绑定页面路径,在pages下创建a.html页面,可使用ip:8000/a.html访问到. "__dirname"为项目路径默认变量
  //app.use('/', express.static(__dirname + '/pages1'));//可配置多路径,但默认会自上往下查找,找到后即返回,终止查找
  app.get('/', function (req, res) {
    // 解析 url 参数
    var params = url.parse(req.url, true).query;
    post('https://cang.mini-kaola.cn/pages/MobileWeb/getStorageDatil.htm',{cangId: params.cangid},function(data){
      res.write(data);
      res.end();
    });
  })
   
 
   
  function post(url,data,fn){
   data=data||{};
   var content=require('querystring').stringify(data);//获得请求的参数
   var parse_u=require('url').parse(url,true);
   var isHttp=parse_u.protocol=='http:';
   var options={
      host:parse_u.hostname,
      port:parse_u.port||(isHttp?80:443),
      path:parse_u.path,
      method:'POST',
      headers:{
         'Content-Type':'application/x-www-form-urlencoded',
         'Content-Length':content.length
      }
    };
    var req = require(isHttp?'http':'https').request(options,function(res){//发送请求
     var _data='';
     res.on('data', function(chunk){
       _data += chunk;
     });
     res.on('end', function(){
        fn!=undefined && fn(_data);
      });
    });
    req.write(content);
    req.end();
  }

2.get

在demo.js中添加如下内容后访问http://mykl:8000/?parameter=2

var express = require('express'),//让其变为web模式
  app = express(),
  http=require('http'),
  url = require('url'),
  include =require('./include.js'),
  server = http.createServer(app);//引入http访问模式并绑定服务
  server.listen(8000);//添加访问端口
  app.use('/', express.static(__dirname + '/pages'));//绑定页面路径,在pages下创建a.html页面,可使用ip:8000/a.html访问到. "__dirname"为项目路径默认变量
  //app.use('/', express.static(__dirname + '/pages1'));//可配置多路径,但默认会自上往下查找,找到后即返回,终止查找
  app.get('/', function (req, res) {
    // 解析 url 参数
    var params = url.parse(req.url, true).query;
 
    //get 请求外网 
    http.get("http://mykl/storage/pages/MobileWeb/getStorageDatil.htm?cangId="+params.cangid,function(req1,res1){ 
      var html=''; 
      req1.on('data',function(data){ 
        html+=data; 
      }); 
      req1.on('end',function(){ 
      res.write(html);
      res.end();
      }); 
    });
     
  })

八、socket

 1.安装socket模块

npm install socket.io

 2.进入上一步安装的模块路径,找到socket.io.js

3.在page下创建一个html,并引用上面的js

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>socket</title>
</head>
<body>
  <dev id="show"/>
  <br/>
  <input type="text" id="nickname"/>昵称<br/>
  <input type="text" id="inmsg"/>
  <input type="button" id="sendBtn" value="发送" />
  <br/>
</body>
<script src="socket.io.js"></script>
<script src="jquery-1.11.3.min.js"></script>
<script>
$(function(){
  var socket=io.connect();//与服务器进行连接
  $('#sendBtn').click(function(){
    var nickname = $('#nickname').val();
    var fatext = $('#inmsg').val();
    if(fatext!=""){
      socket.emit('famsg', nickname+"-"+new Date().toTimeString().substr(0, 8)+":"+fatext+"<br/>");
    }
  });
  socket.on('jiemsg', function(msg) {
    $("#show").append(msg);
  });
});
</script>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

NodeJs 相关文章推荐
我的NodeJs学习小结(一)
Jul 06 NodeJs
NodeJS学习笔记之Connect中间件模块(二)
Jan 27 NodeJs
NodeJS学习笔记之Connect中间件应用实例
Jan 27 NodeJs
Nodejs实现批量下载妹纸图
May 28 NodeJs
nodejs如何获取时间戳与时间差
Aug 03 NodeJs
用NodeJS实现批量查询地理位置的经纬度接口
Aug 16 NodeJs
nodeJS删除文件方法示例
Dec 25 NodeJs
基于nodejs 的多页面爬虫实例代码
May 31 NodeJs
详解nodeJS之二进制buffer对象
Jun 03 NodeJs
解决Nodejs全局安装模块后找不到命令的问题
May 15 NodeJs
分享node.js实现简单登录注册的具体代码
Apr 26 NodeJs
Nodejs文件上传、监听上传进度的代码
Mar 27 #NodeJs
nodejs如何在package.json中设置多条启动命令
Mar 16 #NodeJs
nodejs脚本centos开机启动实操方法
Mar 04 #NodeJs
nodejs制作小爬虫功能示例
Feb 24 #NodeJs
nodejs使用socket5进行代理请求的实现
Feb 21 #NodeJs
linux 下以二进制的方式安装 nodejs
Feb 12 #NodeJs
nodejs实现百度舆情接口应用示例
Feb 07 #NodeJs
You might like
php上传图片获取路径及给表单字段赋值的方法
2016/01/23 PHP
PHP 中提示undefined index如何解决(多种方法)
2016/03/16 PHP
PHP自定义错误处理的方法分析
2018/12/19 PHP
Laravel 框架基于自带的用户系统实现登录注册及错误处理功能分析
2020/04/14 PHP
Mootools 图片展示插件(lightbox,ImageMenu)收集集合
2010/05/21 Javascript
jQuery的attr与prop使用介绍
2013/10/10 Javascript
JavaScript中实现异步编程模式的4种方法
2014/09/24 Javascript
浅谈javascript中this在事件中的应用
2015/02/15 Javascript
JQuery实现简单的服务器轮询效果实例
2016/03/31 Javascript
JS多文件上传的实例代码
2017/01/11 Javascript
jquery实现tab选项卡切换效果(悬停、下方横线动画位移)
2017/05/05 jQuery
详解如何在Angular中快速定位DOM元素
2017/05/17 Javascript
基于对象合并功能的实现示例
2017/10/10 Javascript
动态统计当前输入内容的字节、字符数的实例详解
2017/10/27 Javascript
angularJS自定义directive之带参方法传递详解
2018/10/09 Javascript
爬虫利器Puppeteer实战
2019/01/09 Javascript
JS实现带阴历的日历功能详解
2019/01/24 Javascript
jQuery子选择器与可见性选择器实例分析
2019/06/28 jQuery
vue使用swiper实现中间大两边小的轮播图效果
2019/11/24 Javascript
JS求解两数之和算法详解
2020/04/28 Javascript
Python3实现从指定路径查找文件的方法
2015/05/22 Python
python hook监听事件详解
2018/10/25 Python
Python、 Pycharm、Django安装详细教程(图文)
2019/04/12 Python
浅谈Python3 numpy.ptp()最大值与最小值的差
2019/08/24 Python
Python进度条的制作代码实例
2019/08/31 Python
python实现逆滤波与维纳滤波示例
2020/02/26 Python
使用npy转image图像并保存的实例
2020/07/01 Python
amazeui时间组件的实现示例
2020/08/18 HTML / CSS
国外平面设计第一市场:99designs
2016/10/25 全球购物
PHP中如何创建和修改数组
2012/05/02 面试题
网络教育毕业生自我鉴定
2013/10/10 职场文书
英语专业毕业生求职简历的自我评价
2013/10/24 职场文书
经贸日语毕业生自荐信
2013/11/03 职场文书
理工类毕业自我鉴定
2014/02/20 职场文书
学生会竞选演讲稿学习部
2014/08/25 职场文书
动态规划之使用备忘录来改进Javascript函数
2022/04/07 Javascript