目录

介绍

什么是Nodejs

为什么我们使用Node.js?

通信协议

如何借助Microsoft .Net对Nodejs进行编码

安装NodeJS

为Visual Studio安装NodeJS工具[6]

安装Socket.io

如何使用代码

如何使用和运行带有.net的nodejs

参考


  • 下载项目 - 1.08 MB

介绍

如今,在各种领域中都需要将实时Web应用程序作为双向连接。Javascript是一个很好的解决方案,但它只是在客户端工作,而有一些场景,我们真的需要有在服务器端工作的解决方案。例如,在数据库中存储数据或在服务器端处理数据。有两种流行的技术,一种是SignalR而另一种是Node.js.

您可以通过.nethttps://blog.csdn.net/mzl87/article/details/89289485使用它。

什么是Nodejs

Nodejs是一个开源,实时通信,跨平台,服务器端,由谷歌的v8 javascript引擎上的javascript编写。此外,Nodejs还支持异步I/O的事件驱动架构,可以优化我们应用程序的吞吐量和可扩展性。

为了更好地理解Nodejs,最好扩展上述表达式的真正含义。[3]

为什么我们使用Node.js

首先,对大多数人来说,这是因为我们需要一个双向的Web应用程序的实时解决方案,从客户端到服务器,从服务器到客户端,这样数据就可以在双方之间共享。Node.js的另一个优点是它是跨平台的,使用前不需要复杂的准备和安装。它很好地建立了I/O,最后但并非最不重要的是,数据丢失的可能性太少了。

实时通信

实时Web解决方案是Web技术,它使客户能够在作者发布信息后立即实现和接收信息,而不是通过软件检查或用户手动刷新页面才发现是否有新的数据暴露出来。

跨平台

跨平台意味着Nodejs几乎独立于平台,并且能够安装在具有不同操作系统的每台机器上,例如WindowsLinuxMacintosh。因此Nodejs不需要特定的准备工作,它是可移植的。

服务器端应用程序

有些情况下,由于客户没有接受这些责任的潜力,所以不可能把所有责任都交给客户。例如,如果我们想要在数据库中存储数据,或者在程序上做一些特殊的处理,我们需要把这些功能放在服务器上,而服务器离客户机较远,客户机应该尽力达到它的目的。

 事件驱动架构

如果我们正在使用一些具有不同状态节点的数据管理系统,那么事件驱动使我们能够很快找到其他状态,这样我们就能够正确响应。假设房屋出售或出租的真实状态交易,客户想知道哪个房子仍然可用,他们可以点击它。一旦房屋被选中并被出售,所以应该改变其他人的状态,以避免重新点击它。

异步I/O.

对于I/O有两种方法,简单的方法是同步,它阻止资源和进程直到通信完成,如果我们有很多I/O,那么等待并浪费大量资源。

其他方式是异步的,允许关键操作在等待I/O期间完成工作

吞吐量

在我们需要发送和接收消息的情况下,有可能某些消息无法抵达目标站,因此在一个信道上正确接收的成功消息的速率称为吞吐量。

可扩展性

可扩展性是应用程序的一种能力,可以通过遇到大型场景(如大量数据或节点)而增长。因此,从数量上看,意外增长不会降低系统质量。

通信协议

1. WebSocket

Websocket是一种全双工协议,在内部使用http握手,允许消息流在TCP之上流动。它支持:Google Chrome> 16Fire Fox> 11IE> 10Win IIS> 8.0)。由于加密消息和全双工,websocket是最好的解决方案,并且首先signalR检查Web服务器和客户端服务器是否支持websocket

单工通讯

它只是以一种方式传播,当一个点只是广播而另一个点只能听而不发送信息,如电视和广播。

半双工

一点发送消息,此时另一点不能发送消息,应该等到第一个点完成其传输然后发送消息,它一次只是一条通信线路,如旧的无线设备对讲机和HTTP协议。

全双工

这两个点可以同时发送和接收消息,不需要等到其他点完成其传输,如电话和websocket协议。

全双工

2.服务器发送事件(SSE

signalr的下一个选择是服务器发送事件,因为服务器和客户端之间的持久性通信。在这种方法中,通信不会断开连接,服务器的最后数据将自动更新并通过HTTP连接传输到客户端。EventSourceHTML5技术的一部分。

<font color="#000000">var</font> evsrc = <font color="#000000">new</font> EventSource(<font color="#000000">"</font><font color="#000000">url"</font>);<font color="#000000">//</font><font color="#000000"> Load and Register Event Handler for Messages in this section
</font>evsrc.addEventListener(<font color="#000000">"</font><font color="#000000">message"</font>, function (<font color="#000000">event</font>) {<font color="#000000">//</font><font color="#000000">processing data in this section
</font>       });

3.永远的Frame

当客户端向服务器发送请求时,服务器将一个隐藏的iframe作为chunked块发送给客户端,因此这个iframe负责永久保持客户端和服务器之间的连接。每当服务器更改数据,然后将数据作为脚本标记发送到客户端(隐藏的iframe)时,这些脚本将按顺序接收。

4. 轮询

客户端立即向服务器发送请求和服务器响应发送请求,但在那之后,服务器再次断开连接以便在服务器和客户端之间建立通信,我们应该等待来自客户端的下一个请求。要解决此问题,我们必须手动设置超时,并且每10秒客户端向服务器发送请求以检查服务器端的新修改并获取上次更新数据。轮询使用资源,并且它不是经济的解决方案。

5.长轮询

客户端向服务器发送请求,服务器立即响应,此连接一直保持到特定时间,在此期间客户端不必向服务器发送显式请求,而在轮询中客户端必须在超时期间向服务器发送显式请求。Comet编程涵盖了这一概念。[4]

6. Socket.io

Socket.io是事件驱动和实时通信,它已被抽象出五种以上技术,包括websocket,永远的 frame和长轮询,在单个API中,并允许应用程序无需担心发送和接收数据。[5]

如何借助Microsoft .NetNodejs进行编码

  1. 从此处安装Visual Studio 2015 update 3
  2. https://nodejs.org/en/安装NodeJS
  3. 从此处安装Visual StudioNodeJS工具
  4. npm安装Socket.io
  5. 在服务器上编写代码
  6. 在客户端上编写代码
  7. 通过打开多个浏览器来测试它

安装NodeJS

1、转到https://nodejs.org/en/

2、如果您使用的是Windows,请选择适用于大多数用户的v4.4.7 LTS”

3、然后转到下载文件夹并运行安装文件,如下图所示

4、选择下一步

5、有不同的功能,您可以更改它们或保持它们不变,然后按下一步

Visual Studio安装NodeJS工具[6]

1、在安装NTVS之前,请转到“Visual Studio”创建新项目” - >“模板” - >“JavaScript” - >没有NodeJS

2、转到https://nodejstools.codeplex.com/releases/view/614706

3、转到下载文件夹并运行安装文件

4、完成安装“Visual StudioNode.js工具过程

5、现在 - > Visua Studio - >创建项目 - >模板 - > JavaScript - > Node.js

6、您还将拥有“npm”Nodejs软件包管理器,您可以通过它安装必要的库。

安装Socket.io

  • 在解决方案中右键单击“npm”并选择“Install new npm Packages”

如何使用代码

Server.js上编写代码   

var http = require("http");
var url = require('url');
var fs = require('fs');
var io = require('socket.io');
var port = process.env.port || 1337;
var server = http.createServer(function (request, response) {var path = url.parse(request.url).pathname;switch (path) {case '/':response.writeHead(200, { 'Content-Type': 'text/html' });response.write('hello world');response.end();break;case '/Index.html':fs.readFile(__dirname + path, function (error, data) {if (error) {response.writeHead(404);response.write("page doesn't exist - 404");response.end();}else {response.writeHead(200, { "Content-Type": "text/html" });response.write(data, "utf8");response.end();}});break;default:response.writeHead(404);response.write("page this doesn't exist - 404");response.end();break;}
});
server.listen(port);
var listener = io.listen(server);
listener.sockets.on('connection', function (socket) {//Send Data From Server To Clientsocket.emit('message', { 'message': 'Hello this message is from Server' });//Receive Data From Clientsocket.on('client_data', function (data) {socket.emit('message', { 'message': data.letter });socket.broadcast.emit('message', { 'message': data.letter });process.stdout.write(data.letter);console.log(data.letter);});
});

Index.html上编写代码

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="/socket.io/socket.io.js"></script><script src="https://cdn.socket.io/socket.io-1.4.5.js"></script>
<script src="http://localhost:8080/server.js"></script>
<script src="/server.js"></script>
<script>var socket = io.connect();socket.on('message', function (data) {$('#conversation').append('
' + data.message);});$(document).ready(function () {$('#send').click(function () {var msg = $('#text').val();socket.emit('client_data', { 'letter': msg });})});
</script>

这是我们的对话

<input id =“text”type =“text”/> <button id =“send”>发送</ button>

如何使用和运行带有.netnodejs

1、按F5运行.net上的所有Web应用程序,您将看到

2、打开多个浏览器并将URL更改为“http://localhost:1337/Index.html”, 在文本框中键入您的消息,然后按“发送”按钮,您一按“发送”就可以在另一个客户机上看到它。

参考

  1. http://danielnill.com/nodejs-tutorial-with-socketio/
  2. https://en.wikipedia.org/wiki/Node.js
  3. https://nodejs.org/api/http.html#http_agent_sockets
  4. https://blog.csdn.net/mzl87/article/details/89285089
  5. https://nodesource.com/blog/understanding-socketio/
  6. http://www.codeproject.com/Tips/895385/Pictorial-Step-by-step-discussion-of-Nodejs-tools
  7. Socket.io

原文地址:https://www.codeproject.com/Articles/1110187/NodeJS-By-Net-Platform

Microsoft Visual Studio使用NodeJS相关推荐

  1. Microsoft Visual Studio 2012 添加实体数据模型

     Microsoft Visual Studio 2012 添加实体数据模型 1.创建一个web项目 2.添加ADO实体数据模型,如下图: 3.选择 从数据库生成,然后下一步 4.新建连接,如下图: ...

  2. Microsoft Visual Studio 2010 Load Test Feature Pack安装排错

    遇到Load Test相关数据库报错 --------------------------- Microsoft Visual Studio --------------------------- T ...

  3. 使用Microsoft Visual Studio International Pack获得中文字符串的所有拼音组合(处理多音字)...

    最近一个项目中客户需要做人名的拼音检索,就像QQ好友那样,输入拼音就提示符合的联系人.上网找了一下,发现微软已经发布了相关的支持库,不仅可以处理拼音,还能处理笔画.简繁体转换等.csdn上有一篇博客介 ...

  4. Microsoft Visual Studio Learning Pack 自动生成流程图插件(转)

    最近写文档,要贴流程图,自己画太烦,就到网上去找自动生成流程图的软件,结果知道了这个叫 Microsoft Visual Studio Learning Pack 的插件,用它来生成函数的流程图,感觉 ...

  5. please wait while windows configures microsoft visual studio professional 2013

    VS3013安装update 2以后,打开offie出现"please wait while windows configures microsoft visual studio profe ...

  6. AO安装需要Microsoft Visual Studio 2013?

    从接触ArcGIS9.2到 10.4,在不断升级的 过程中,既给我们带来了很多惊喜,也带来一些麻烦,因为ArcGIS版本不兼容.出于体验,安装了ArcGIS Desktop10.4,AO也得升到10. ...

  7. Microsoft Visual Studio 2010 Service Pack 1

    官方页面 http://www.microsoft.com/downloads/zh-cn/details.aspx?FamilyID=75568aa6-8107-475d-948a-ef22627e ...

  8. MICROSOFT VISUAL STUDIO COMMUNITY 2015软件许可条款

    MICROSOFT VISUAL STUDIO COMMUNITY 2015 这些许可条款是 Microsoft 公司(或您所在地的 Microsoft 公司的关联公司)与您之间达成的协议.这些条款适 ...

  9. Microsoft Visual Studio Learning Pack 2.0

    一个比较有意思的教学插件,推荐给辛勤的老师们. Microsoft Visual Studio Learning Pack 2.0 (上一版的名字是 Microsoft VisualStudio Ch ...

最新文章

  1. atomic原子类实现机制_JUC学习笔记--Atomic原子类
  2. pdf文档出现乱码如何修改
  3. Eclipse插件安装方式及使用说明
  4. Pattern of Patterns
  5. CVPR 2019 | 小样本域适应的目标检测
  6. php微信网页开发实现自动登录注册功能实例
  7. 工业机器人控制问题---来自睿慕课
  8. C++接收字符串数组_电脑编程 你该知道的字符知识 C语言程序设计字符数组全归纳...
  9. 【黑马JS比较】用JavaScripts的DOM对象实现动态表格
  10. 树莓派+ L298N 控制二相四线步进电机
  11. 清理Windows Temp目录下的cab*文件
  12. [Nowcoder] [牛客网NOIP赛前集训TG4A] 动态点分治 [模拟]
  13. 西南大学计算机2019专业英语秋季答案,西南大学2019年秋《大学英语B》作业资料参考答案...
  14. 微信扫码点餐小程序怎么做,一步步教你
  15. VUE3+Vite开发网易云音乐 Day1 后端环境搭建
  16. linux之mmc子系统
  17. Tapestry3.0开发概论
  18. MEM/MBA 写作-论说文(03)立意 答案解析
  19. 局域网中域和工作组的概念
  20. 好听的歌曲单片机c语言程序,单片机C语言程序举例(三)

热门文章

  1. php重定向mysql_使用.php文件生成MySQL转储
  2. php条件运算符加法器,【加法笔记系列】JS 加法器模拟
  3. 设计师值得学习的分类网站
  4. 炫彩渐变海报素材模板,可运用到海报、电商设计等方面
  5. linux open出现乱码,OpenStack 数据库中文乱码问题
  6. wits数据格式_WITS标准
  7. qt输出中文乱码处理(解决方法)
  8. 深入浅出 eBPF: (Linux/Kernel/XDP/BCC/BPFTrace/Cillium)
  9. Java与Cuda混合编程
  10. 大型企业用什么orm_在大型仓储物流企业中使用什么类型的货架更为合适呢?