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开发环境配置与使用
Nov 17 NodeJs
Nodejs学习笔记之NET模块
Jan 13 NodeJs
nodejs中的fiber(纤程)库详解
Mar 24 NodeJs
使用nodejs中httpProxy代理时候出现404异常的解决方法
Aug 15 NodeJs
Jquery通过ajax请求NodeJS返回json数据实例
Nov 08 NodeJs
搭建简单的nodejs http服务器详解
Mar 09 NodeJs
nodejs入门教程一:概念与用法简介
Apr 24 NodeJs
nodeJS实现路由功能实例代码
Jun 08 NodeJs
详解IWinter 一个路由转控制器的 Nodejs 库
Nov 15 NodeJs
nodejs实现爬取网站图片功能
Dec 14 NodeJs
nodejs初始化init的示例代码
Oct 10 NodeJs
一文秒懂nodejs中的异步编程
Jan 28 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数组的交集array_intersect(),array_intersect_assoc(),array_inter_key()函数的小问题
2011/05/29 PHP
php懒人函数 自动添加数据
2011/06/28 PHP
ThinkPHP调试模式与日志记录概述
2014/08/22 PHP
php实现点击可刷新验证码
2015/11/07 PHP
PHP使用正则表达式实现过滤非法字符串功能示例
2018/06/04 PHP
PDO实现学生管理系统
2020/03/21 PHP
Prototype使用指南之base.js
2007/01/10 Javascript
Jquery iframe内部出滚动条
2010/02/11 Javascript
js下利用控制器载入对应脚本
2010/07/17 Javascript
js中scrollHeight,scrollWidth,scrollLeft,scrolltop等差别介绍
2012/05/16 Javascript
利用div+jquery自定义滚动条样式的2种方法
2013/07/18 Javascript
JS 两个字符串时间的天数差计算
2013/08/25 Javascript
nodejs之请求路由概述
2014/07/05 NodeJs
浅谈Sizzle的“编译原理”
2015/04/14 Javascript
JS自动倒计时30秒后按钮才可用(两种场景)
2015/08/31 Javascript
jQuery Mobile中的button按钮组件基础使用教程
2016/05/23 Javascript
jstree单选功能的实现方法
2017/06/07 Javascript
node基于puppeteer模拟登录抓取页面的实现
2018/05/09 Javascript
vue图片上传本地预览组件使用详解
2019/02/20 Javascript
Js通过AES加密后PHP用Openssl解密的方法
2019/07/12 Javascript
微信小程序实现电子签名功能
2020/07/29 Javascript
Python中解析JSON并同时进行自定义编码处理实例
2015/02/08 Python
Linux中Python 环境软件包安装步骤
2016/03/31 Python
Python 记录日志的灵活性和可配置性介绍
2018/02/27 Python
12个Python程序员面试必备问题与答案(小结)
2019/06/24 Python
python爬虫-模拟微博登录功能
2019/09/12 Python
使用python将最新的测试报告以附件的形式发到指定邮箱
2019/09/20 Python
Keras: model实现固定部分layer,训练部分layer操作
2020/06/28 Python
python 最简单的实现适配器设计模式的示例
2020/06/30 Python
Python 图片处理库exifread详解
2021/02/25 Python
应用化学专业本科生求职信
2013/09/29 职场文书
上班迟到检讨书
2014/09/15 职场文书
2014年调度员工作总结
2014/11/19 职场文书
2015年超市收银员工作总结
2015/04/25 职场文书
安装harbor作为docker镜像仓库的问题
2022/06/14 Servers
Go语言编译原理之变量捕获
2022/08/05 Golang