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中简单实现Javascript Promise机制的实例
Dec 06 NodeJs
轻松创建nodejs服务器(8):非阻塞是如何实现的
Dec 18 NodeJs
NodeJS中的MongoDB快速入门详细教程
Nov 11 NodeJs
简单实现nodejs上传功能
Jan 14 NodeJs
Express与NodeJs创建服务器的两种方法
Feb 06 NodeJs
NodeJs下的测试框架Mocha的简单介绍
Feb 22 NodeJs
详解Windows下安装Nodejs步骤
May 18 NodeJs
nodejs发送http请求时遇到404长时间未响应的解决方法
Dec 10 NodeJs
关于Mac下安装nodejs、npm和cnpm的教程
Apr 11 NodeJs
nodejs读取并去重excel文件
Apr 22 NodeJs
nodejs微信开发之自动回复的实现
Mar 17 NodeJs
Nodejs监控事件循环异常示例详解
Sep 22 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自定义函数call_user_func和call_user_func_array详解
2011/07/14 PHP
yii2框架中使用下拉菜单的自动搜索yii-widget-select2实例分析
2016/01/09 PHP
php从身份证获取性别和出生年月
2017/02/09 PHP
Prototype使用指南之hash.js
2007/01/10 Javascript
Javascript 继承实现例子
2009/08/12 Javascript
js 利用className得到对象的实现代码
2011/11/15 Javascript
JavaScript数据库TaffyDB用法实例分析
2015/07/27 Javascript
轻松搞定js表单验证
2016/10/13 Javascript
滚动条的监听与内容随着滚动条动态加载的实现
2017/02/08 Javascript
Javascript前端经典的面试题及答案
2017/03/14 Javascript
Vue创建头部组件示例代码详解
2018/10/23 Javascript
如何从头实现一个node.js的koa框架
2019/06/17 Javascript
[02:36]DOTA2上海特锦赛 回忆电竞生涯的重要瞬间
2016/03/25 DOTA
[45:52]2018DOTA2亚洲邀请赛 4.1小组赛 A组加赛 LGD vs Liquid
2018/04/02 DOTA
python用10行代码实现对黄色图片的检测功能
2015/08/10 Python
在Django中输出matplotlib生成的图片方法
2018/05/24 Python
django admin 后台实现三级联动的示例代码
2018/06/22 Python
Python 画出来六维图
2019/07/26 Python
Python获取对象属性的几种方式小结
2020/03/12 Python
如何基于Python按行合并两个txt
2020/11/03 Python
Prototype如何更新局部页面
2013/03/03 面试题
留学自荐信
2013/10/10 职场文书
医学生自荐信范文
2013/12/03 职场文书
商场活动策划方案
2014/01/24 职场文书
残疾人创业典型事迹
2014/02/01 职场文书
花店创业计划书范文
2014/02/07 职场文书
《青蛙看海》教学反思
2014/04/23 职场文书
产品包装策划方案
2014/05/18 职场文书
《中国梦我的梦》中学生演讲稿
2014/08/20 职场文书
暑期培训班招生方案
2014/08/26 职场文书
银行反四风对照检查材料
2014/09/29 职场文书
旷课检讨书500字
2014/10/14 职场文书
2014年妇女工作总结
2014/12/06 职场文书
关于做家务的心得体会
2016/01/23 职场文书
Python数据分析入门之教你怎么搭建环境
2021/05/13 Python
mysql配置SSL证书登录的实现
2021/09/04 MySQL