Nodejs实现WebSocket代码实例

一、环境配置

  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>

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

(0)

相关推荐

  • nodejs基于WS模块实现WebSocket聊天功能的方法

    本文实例讲述了nodejs基于WS模块实现WebSocket聊天功能的方法.分享给大家供大家参考,具体如下: WebSocket 模块众多,我选择了一个较为简单的模块 进行了实现. 工具:Sublime 技术:Node.js 引用模块 ws 最终效果如下 本来打算制作网络画板,因为工作忘记了,这里就简单实现了 群聊功能 没什么好介绍的,网上代码案例太多了,(各位新手主要碰见的问题,可能也就是 node 导入模块问题了) 介绍一下安装模块: 找到安装node 目录,进入到 npm 目录下  运行

  • node.js基于express使用websocket的方法

    本文实例讲述了node.js基于express使用websocket的方法.分享给大家供大家参考,具体如下: 这个效果我也是翻了好长时间的资料,测试才成功的,反正成功,大家看看吧 首先你需要安装socket.io模块 npm install socket.io --save 然后打开express的app.js将模块引入,在12行左右的 var app = express(); 下面添加两行 var server = require('http').Server(app); var io = r

  • node.js ws模块搭建websocket服务端的方法示例

    首先下载websocket模块,命令行输入 npm install ws node.js的 模块ws,可用于创建websocket服务,基本的express 和 http模块的使用 var express = require('express'); var http = require('http'); var WebSocket = require('ws'); var app = express(); var server = http.createServer(app); var wss

  • nodejs 使用nodejs-websocket模块实现点对点实时通讯

    1.首先安装好nodejs-websocket npm install nodejs-websocket --save -g 2.编写服务端 var ws = require("nodejs-websocket") var AllUserData = new Array() // Scream server example: "hi" -> "HI!!!" var server = ws.createServer(function (con

  • node.js中ws模块创建服务端和客户端,网页WebSocket客户端

    首先下载websocket模块,命令行输入 npm install ws 1.node.js中ws模块创建服务端 // 加载node上websocket模块 ws; var ws = require("ws"); // 启动基于websocket的服务器,监听我们的客户端接入进来. var server = new ws.Server({ host: "127.0.0.1", port: 6080, }); // 监听接入进来的客户端事件 function webs

  • Nodejs + Websocket 指定发送及群聊的实现

     目的 通过nodejs + ws (Websocket) 实现点对点发送及群聊发送 项目搭建直接跳过,这里列举一下用到的插件 yarn add ws WebSocket 话不多说,直接上码 对比上一篇文章 << Nodejs+MongoDB 搭建服务( demo ) >> server.js 主要是增加了ws的引用, webSocket 点对点也好,群聊也好,主要是用到一个方法 clients 它的作用就是存储了连接, 我们可以通过对每一个连接增加标识,然后根据接收到的信息进行解

  • NodeJS简单实现WebSocket功能示例

    本文实例讲述了NodeJS简单实现WebSocket功能.分享给大家供大家参考,具体如下: 我们基于express和socket.io开发,首先我们需要安装以下包 npm install --save express npm install --save socket.io 服务器端代码: var app = require('express')(); var http = require('http').Server(app); var io = require('socket.io')(ht

  • Nodejs实现WebSocket代码实例

    一.环境配置 1.下载安装nodejs https://nodejs.org/en/download/ 2.安装完成后打开cmd命令,执行node --version,看看是否安装成功,如果提示没有此命令,去配置下环境变量,正常情况下安装后自动设置环境变量 二.配置nodejs模块 1.安装express模块 模块介绍:Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具. 安装方式:在项目路径下执行np

  • SpringBoot2.0整合WebSocket代码实例

    这篇文章主要介绍了SpringBoot2.0整合WebSocket代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 之前公司的某个系统为了实现推送技术,所用的技术都是Ajax轮询,这种方式浏览器需要不断的向服务器发出请求,显然这样会浪费很多的带宽等资源,所以研究了下WebSocket,本文将详细介绍下. 一.什么是WebSocket? WebSocket是HTML5开始提供的一种在单个TCP连接上进行全双工通讯的协议,能更好的节省服务器资

  • 原生nodejs使用websocket代码分享

    安装: npm  install  ws 服务端(nodejs): var WebSocketServer = require('ws').Server, wss = new WebSocketServer({ port: 8080 }); wss.on('connection', function (ws) { console.log('client connected'); ws.on('message', function (message) { console.log(message);

  • nodejs加密Crypto的实例代码

    加密技术通常分为两大类:"对称式"和"非对称式". 对称式加密: 就是加密和解密使用同一个密钥,通常称之为"Session Key "这种加密技术在当今被广泛采用,如美国政府所采用的DES加密标准就是一种典型的"对称式"加密法,它的Session Key长度为56bits. 非对称式加密: 就是加密和解密所使用的不是同一个密钥,通常有两个密钥,称为"公钥"和"私钥",它们两个必需配对使用

  • NodeJS落地WebSocket实践前端架构师破局技术

    目录 网络协议进化 Socket.IO? ws 模块实现 服务端 客户端 Express 集成 WebSocket 实例 浏览器 服务端 消息广播 安全与认证 Token 连接认证 wss 支持 BFF 应用 网络协议进化 HTTP 协议是前端最熟悉的网络通信协议.我们通常的打开网页,请求接口,都属于 HTTP 请求. HTTP 请求的特点是:请求-> 响应.客户端发起请求,服务端收到请求后进行响应,一次请求就完成了.也就是说,HTTP 请求必须由客户端发起,服务端才能被动响应. 除此之外,发起

  • 浅析nodejs实现Websocket的数据接收与发送

    WebSocket是HTML5开始提供的一种浏览器与服务器间进行全双工通讯的网络技术.在WebSocket API中,浏览器和服务器只需要要做一个握手(handshaking)的动作,然后,浏览器和服务器之间就形成了一条快速通道.两者之间就直接可以数据互相传送. WebSocket是一个通信的协议,分为服务器和客户端.服务器放在后台,保持与客户端的长连接,完成双方通信的任务.客户端一般都是实现在支持HTML5浏览器核心中,通过提供JavascriptAPI使用网页可以建立websocket连接.

  • nodejs处理http请求实例详解之get和post

    目录 前言:http 请求概述 Q: 从浏览器输入 url 到页面显示的整个过程? nodejs 处理 get 请求 简单的 demo 测试一下 nodejs 处理 post 请求 简单的demo 测试一下 补充:postman postman 的下载 总结 前言:http 请求概述 从一个经典的面试题入手,简单了解下 http 请求: Q: 从浏览器输入 url 到页面显示的整个过程? 第一步:DNS 解析, 建立 TCP 连接,发送 http 请求,简单来讲就是—— 先进行 DNS 解析,即

  • Java编程实现从尾到头打印链表代码实例

    问题描述:输入一个链表的头结点,从尾巴到头反过来打印出每个结点的值. 首先定义链表结点 public class ListNode { int val; ListNode next = null; ListNode(int val){ this.val = val; } } 思路1:此题明显想到是利用栈的思想,后进先出,先遍历链表,依次将结点值进栈.最后在遍历栈出栈. public static Stack<Integer> printListReverse_Stack(ListNode li

  • Java探索之Thread+IO文件的加密解密代码实例

    这篇文章向大家分享了几段代码,主要是关于Thread+IO文件的加密解密,下面看看具体代码: 加密启动线程 package com.hz.subsection; import java.io.File; public class enCodeFileThread extends Thread { public Files files; public File file; public File dst; public enCodeFileThread(String name,Files file

  • oracle横向纵向求和代码实例

    有一张工资表SALARY如下, (NO 员工编号 ,MONEY 工资) NO    NAME     ITEM       MONEY 001    张三        工资        80 001    张三        补贴        86 001    张三        奖金        75 002    李四        工资        78 002    李四        补贴        85 002    李四        奖金        78 求每

随机推荐