WebSocket-nodejs实现

一、环境配置

  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'),//进入jsserver = 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"));})

  3.请求ip:port即可看到内容

六、解析请求参数

  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>

  

转载于:https://www.cnblogs.com/buggou/p/9014241.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/267105.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PXE自动安装FreeBSD

作者信息 作者:diege 时间:2012-05-02 前言 最经准备整理运维自动化相关的技术&#xff0c;发现FreeBSD的PXE安装忘的七七八八了&#xff0c;所以先整理一下&#xff0c;仍到博客上来。 目标 通过FreeBSD Server PXE安装FreeBSD操作系统 Server信息 操作系统版本&#xff1a;Fr…

mysql 5.6 gtid 主从_MySQL5.6基于GTID的主从复制

一、GTID简介MySQL 5.6 的新特性之一&#xff0c;是加入了全局事务 ID (GTID) 来强化数据库的主备一致性&#xff0c;故障恢复&#xff0c;以及容错能力。什么是GTID&#xff1f;官方文档&#xff1a;http://dev.mysql.com/doc/refman/5.6/en/replication-gtids.html在这篇文档…

Spring Boot之HelloWorld

视频网址&#xff1a;http://www.iqiyi.com/w_19ruksbpf1.html <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http://maven.a…

防止黑客入侵的五大技巧

2019独角兽企业重金招聘Python工程师标准>>> 防止黑客入的方法有很多&#xff0c;但是世界上没有绝对安全的系统。我们只可以尽量避免被入侵&#xff0c;最大的程度上减少伤亡。那么&#xff0c;接下来天下数据将为您详细介绍防止黑客入侵的五大技巧。(本文为天下数…

mysql js 命令行登录_mysqlsh 命令行模式与密码保存-爱可生

原标题&#xff1a;mysqlsh 命令行模式与密码保存-爱可生命令行模式mysql shell 如何实现类似 mysql -e "show processlist;" 的效果&#xff1f;即执行完就退出登录&#xff0c;不需要交互&#xff0c;我们经常在脚本中这样使用。那么同样的&#xff0c;在维护 Inno…

AngularJS学习笔记(1)——MVC模式的清单列表效果

MVC模式的清单列表效果 使用WebStorm新建todo.html并链入bootstrap.css、bootstrap-theme.css、angular.js。要链入的相关css和js文件预先准备好&#xff0c;文件目录如下&#xff1a; 使用MVC模式前的代码&#xff1a; <!DOCTYPE html> <html ng-app> <head&g…

C#多线程学习(六) 互斥对象

C#多线程学习(六) 互斥对象 原文链接&#xff1a;http://kb.cnblogs.com/page/42533/ 本系列文章导航 C#多线程学习(一) 多线程的相关概念 C#多线程学习(二) 如何操纵一个线程 C#多线程学习(三) 生产者和消费者 C#多线程学习(四) 多线程的自动管理(线程池) C#多线程学习(五) 多…

什么是mysql事物定义_Mysql事务原理

1. 什么是数据库事务1.1 事务的应用场景电商平台中例如常见的下单流程&#xff0c;会同时操作订单表&#xff0c;库存表等&#xff0c;有时候这些操作要在一个事务里面完成。还有金融系统业务的银行转账&#xff0c;需要保证一个账户增加另一个账户减少&#xff0c;这两个动作 …

centos 6 安装mosh 1.2

关于mosh&#xff08;引用于&#xff09; 芬兰研究员Tatu Ylnen于1995年设计出最早的SSH协议&#xff0c;它迅速成为最流行的远程登录安全协议。17年后&#xff0c;一组MIT的***提出了mosh&#xff0c;让SSH走向现代化。mosh是基于新的State Synchronization Protocol&#xff…

数组去重js方式

var selectmap new Array(); /(\x0f[^\x0f])\x0f[\s\S]*\1/.test("\x0f"selectmap.join("\x0f\x0f") "\x0f")返回为true表示存在重复数据转载于:https://www.cnblogs.com/lc93/p/9028038.html

mysql网络订餐系统截屏_在线订餐系统mysql字段

在线订餐系统mysql字段,随便写的了。也许要改变呢。再说吧啊。在线订餐系统mysql字段分成3个表开发1.user2.order3.pay1.用户表包含下面字段 id int 主键&#xff0c;自动累加&#xff0c;不为空&#xff0c;长度10就够了吧&#xff1b;用户名(name) varchar类型 30长度够了吧。…

学习jvm,关于MAT an internal error occurred during:Parsing heap dump from问题

写了一个死循环不断的创建对象&#xff0c;模拟内存溢出 1 package com.zuo.test1;2 3 import java.util.ArrayList;4 import java.util.List;5 6 public class Main {7 8 public static void main(String[] args) {9 List<Demo> demosnew ArrayList<…

实例讲解override和new的区别

一、override&#xff1a;Override关键字主要是提供派生类对基类方法的新实现。 1、不可以用于重写非虚方法和静态方法 2、与其配套使用的关键字是Virtual、abstract、Override。 3、不能使用修饰符 new、static、virtual 或 abstract 来修改 override 方法。 二、new&#xff…

mysql报错5_mysql5.5 启动报错:ERROR!_MySQL

bitsCN.com在FreeBSD中启动mysql时报错&#xff0c;ERROR! The server quit without updating PID file&#xff0c;通常这是可以查看数据库目录下的.err日志&#xff0c;里面会记录一些具体的错误信息&#xff0c;对排错相当有用&#xff0c;内容如下&#xff1a;110805 17:30…

MySQL安装总结

安装MySQL&#xff1a;&#xff08;以安装5.1版本为例&#xff09; 1. 双击你下载的安装程序&#xff0c;然后会进入一个‘Welecom to the Setup Wizard for MySQL Server 5.1’的图形界面&#xff01;在这里不用做任何操作&#xff0c;点击next&#xff0c;进入下一步&a…

java swing事件_第四节 Java Swing事件处理

第四节&#xff1a;事件处理一个图形界面完的成只是程序开发中起步的工作&#xff0c;因为要想让每一个组件都发挥其作用&#xff0c;就必须对所有的组件进行事件处理。那么什么是事件处理&#xff0c;所谓事件就表示一个对象发生状态变化。例如&#xff0c;每当按下一个按钮时…

jedate-开始使用一款好用的时间插件

jeDate日期控件 -&#xff08;原生JS版&#xff09;jeDate V6.5.0 是一款原生JS开发的 不依赖任何第三方库 大众化的日期控件&#xff0c;包含 多语言、设定年月&#xff08;YYYY-MM&#xff09;、日期范围限制、开始日期设定、自定义日期格式、根据不同的日期格式&#xff0c;…

我们买得起nook,kindle fire可我们买不起书啊

BARNES & NOBLE | Bring Up the Bodies by Hilary Mantel, Holt, Henry & Company, Inc. | NOOK Book (eBook), Hardcover, AudiobookBarnsnobles

java 验证码 插件_javaweb中验证码插件Kaptcha的使用

1.首先在pom.xml中导入依赖com.github.pengglekaptcha2.3.22.在web.xml中设置Kaptchacom.google.code.kaptcha.servlet.KaptchaServletkaptcha.bordernokaptcha.textproducer.font.colorredkaptcha.image.width135kaptcha.textproducer.char.stringACDEFHKPRSTWX345679kaptcha.…

zabbix的安装(一)监控os资源:内存,cpu,io,负载,带宽

一、Linux下开源监控系统简单介绍1&#xff09;cacti&#xff1a;存储数据能力强&#xff0c;报警性能差2&#xff09;nagios&#xff1a;报警性能差&#xff0c;存储数据仅有简单的一段可以判断是否在合理范围内的数据长度&#xff0c;储存在内存中。比如&#xff0c;连续采样…