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入门详解(多篇文章结合)
Mar 07 NodeJs
nodejs分页类代码分享
Jun 17 NodeJs
基于NodeJS的前后端分离的思考与实践(二)模版探索
Sep 26 NodeJs
NodeJS中Buffer模块详解
Jan 07 NodeJs
Nodejs学习笔记之Global Objects全局对象
Jan 13 NodeJs
Nodejs学习笔记之Stream模块
Jan 13 NodeJs
nodejs批量修改文件编码格式
Jan 22 NodeJs
Nodejs从有门道无门菜鸟起飞必看教程
Jul 20 NodeJs
nodejs模块nodemailer基本使用-邮件发送示例(支持附件)
Mar 28 NodeJs
nodejs后台集成ueditor富文本编辑器的实例
Jul 11 NodeJs
详解Nodejs get获取远程服务器接口数据
Mar 26 NodeJs
Nodejs中的require函数的具体使用方法
Apr 02 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
虹吸式咖啡探讨–研磨
2021/03/03 冲泡冲煮
php启动时候提示PHP startup的解决方法
2013/05/07 PHP
使用PHP把HTML生成PDF文件的几个开源项目介绍
2014/11/17 PHP
JObj预览一个JS的框架
2008/03/13 Javascript
window.location.href = window.location.href 跳转无反应 a超链接onclick事件写法
2013/08/21 Javascript
JS将制定内容复制到剪切板示例代码
2014/02/11 Javascript
js 声明数组和向数组中添加对象变量的简单实例
2016/07/28 Javascript
纯JavaScript 实现flappy bird小游戏实例代码
2016/09/27 Javascript
利用JQuery阻止事件冒泡
2016/12/01 Javascript
jQuery事件详解
2017/02/23 Javascript
node.js平台下利用cookie实现记住密码登陆(Express+Ejs+Mysql)
2017/04/26 Javascript
微信小程序多列选择器range-key使用详解
2020/03/30 Javascript
js原生实现移动端手指滑动轮播图效果的示例
2018/01/02 Javascript
vue 微信授权登录解决方案
2018/04/10 Javascript
JS插件amCharts实现绘制柱形图默认显示数值功能示例
2019/11/26 Javascript
js实现列表向上无限滚动
2020/01/13 Javascript
JavaScript队列结构Queue实现过程解析
2020/03/07 Javascript
[52:39]完美世界DOTA2联赛PWL S3 CPG vs Forest 第一场 12.16
2020/12/17 DOTA
tornado框架blog模块分析与使用
2013/11/21 Python
python使用内存zipfile对象在内存中打包文件示例
2014/04/30 Python
通过python实现随机交换礼物程序详解
2019/07/10 Python
python中Lambda表达式详解
2019/11/20 Python
Python定时任务框架APScheduler原理及常用代码
2020/10/05 Python
简述python&amp;pytorch 随机种子的实现
2020/10/07 Python
python openssl模块安装及用法
2020/12/06 Python
html5中svg canvas和图片之间相互转化思路代码
2014/01/24 HTML / CSS
请介绍一下Ant
2016/07/22 面试题
资料员的岗位职责
2013/11/20 职场文书
人资专员岗位职责
2014/04/04 职场文书
音乐兴趣小组活动总结
2014/07/07 职场文书
2014年九一八事变演讲稿
2014/09/14 职场文书
婚前保证书范文
2015/02/28 职场文书
同事去世追悼词
2015/06/23 职场文书
使用HttpSessionListener监听器实战
2022/03/17 Java/Android
海弦WR-800F
2022/04/05 无线电
pandas时间序列之pd.to_datetime()的实现
2022/06/16 Python