sockjs小程序,nodejs开发小程序

本文目录一览:

Vert.x 与 Node.js 有哪些区别

Vert.x是一个用于下一代异步、可伸缩、并发应用的框架,旨在为JVM提供一个Node.js的替代方案。开发者可以通过它使用JavaScript、Ruby、Groovy、Java、甚至是混合语言来编写应用。

在内部,一个vert.x实例会管理着一个小的线程集合,每个线程针对服务器上的一个可用内核。基本上每个线程都实现了一个事件循环。当部署一个vert.x应用实例(又叫做verticle)时,服务器会选择一个事件循环分配给该实例。接下来针对该实例的任务都会通过该线程进行分配。由于在某一时刻可能会有成千上万个verticle在运行,因此在同一时刻会将单个事件循环指定给多个verticle。

Verticle可与运行在相同或不同vert.x实例中的其他verticle进行通信,这是通过消息事件总线实现的,它类似于Erlang的actor模型。消息传递旨在让系统能够在多个可用核心上进行扩展而无需以多线程的方式来执行verticle代码。

事件总线是分布式的,并不只会跨越服务器,还会渗透进客户端的JavaScript以处理“实时”的Web应用。

除了并发与消息传递外,vert.x还具有如下特性:

TCP/SSL服务器与客户端

HTTP/HTTPS服务器与客户端

WebSockets/SockJS支持

InfoQ有幸采访到了VMWare的高级工程师Tim Fox以了解vert.x:

InfoQ:能否从架构上介绍一下vert.x及其构建方式?

Tim:vert.x的核心是用Java编写的,接下来我们为每一种支持的JVM语言编写了一个薄薄的API层,这样每种语言都有一个适合于该语言的API了。我们并没有向这些语言直接公开Java API。这意味着Ruby用户会通过Ruby的方式编写代码,JS用户会通过JS的方式编写代码。

InfoQ:能否描述一下在vert.x上典型的开发流程么,特别是与开发者使用Node.js的体验进行一下对比?

我觉得这与node.js是非常类似的。实际的工作流程取决于你是在本地还是云中运行应用。但这并非vert.x所特有的。

InfoQ:就调试、监控与运维来看,在JVM与Node.js上运行实时应用有何差别?

我想说监控与运维实际上与部署vert.x的环境之间的关系更为密切而非vert.x本身。比如说,如果将vert.x部署到云中,那么云提供商可能就会为你提供监控。顺便说一下,社区成员目前已经在OpenShift与Heroku上运行了Vert.x。我们希望不久之后CloudFoundry支持就会到来。

InfoQ:vert.x与Node.js有什么基准比较么?

我们尚未发布任何的官方基准。但我自己已经完成了一些,在我所做的测试中,vert.x的性能与可伸缩性都远远超越了node.js。我希望在不久之后能够发布一些基准。

InfoQ:vert.x与Netty相比如何呢?

Netty是个很棒的底层IO库。Vert.x实际上使用了Netty。但vert.x是个用于编写异步应用的完整平台。Vert.x还提供了一个组件模型、文件IO及各种Netty所没有的东西。我要说的是,在JVM世界中,Vert.x是更类似于Akka(也使用了Netty)之类的完整框架。

微信公众平台 网页 跳转 如何获取 账号

一、通过全局Access Token获取用户基本信息

1. 用户关注以及回复消息的时候,均可以获得用户的OpenID

xml

ToUserName![CDATA[gh_b629c48b653e]]/ToUserName

FromUserName![CDATA[ollB4jv7LA3tydjviJp5V9qTU_kA]]/FromUserName

CreateTime1372307736/CreateTime

MsgType![CDATA[event]]/MsgType

Event![CDATA[subscribe]]/Event

EventKey![CDATA[]]/EventKey

/xml

其中的FromUserName就是OpenID

2. 然后使用access_token接口,请求获得全局Access Token

;appid=APPIDsecret=APPSECRET

返回结果:

{

“access_token”: “NU7Kr6v9L9TQaqm5NE3OTPctTZx797Wxw4Snd2WL2HHBqLCiXlDVOw2l-Se0I-WmOLLniAYLAwzhbYhXNjbLc_KAA092cxkmpj5FpuqNO0IL7bB0Exz5s5qC9Umypy-rz2y441W9qgfnmNtIZWSjSQ”,

“expires_in”: 7200

}

3. 再使用全局ACCESS_TOKEN获取OpenID的详细信息

;openid=OPENID

返回如下:

{

“subscribe”: 1,

“openid”: “oLVPpjqs2BhvzwPj5A-vTYAX4GLc”,

“nickname”: “方倍”,

“sex”: 1,

“language”: “zh_CN”,

“city”: “深圳”,

“province”: “广东”,

“country”: “中国”,

“headimgurl”: “”,

“subscribe_time”: 1386160805

}

至此,获得用户的基本信息。

二、通过OAuth2.0方式弹出授权页面获得用户基本信息

1. 首先配置回调域名

2. 构造请求url如下:

;redirect_uri=;response_type=codescope=snsapi_userinfostate=1#wechat_redirect

页面URL中的

scope=snsapi_userinfo 表示应用授权作用域为请求用户信息

★ 如果使用别人的AppID和AppSecret,那么获得的OpenID是那个有高级接口权限的服务号的,这里可以通过消息回复,获取本公众账号下的OpenID,带入回调中,与另一个OpenID进行关联

;redirect_uri=;response_type=codescope=snsapi_userinfostate=1#wechat_redirect

将该链接回复给关注用户,用户点击后,弹出应用授权界面

3. 回调页面得到链接如下,回调url中将包含参数code

;state=1

或者 ;code=00b788e3b42043c8459a57a8d8ab5d9fstate=1

4. 再使用code换取oauth2的授权access_token

url如下:

;secret=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacode=00b788e3b42043c8459a57a8d8ab5d9fgrant_type=authorization_code

获得授权Access Token:

{

“access_token”: “OezXcEiiBSKSxW0eoylIeAsR0GmYd1awCffdHgb4fhS_KKf2CotGj2cBNUKQQvj-G0ZWEE5-uBjBz941EOPqDQy5sS_GCs2z40dnvU99Y5AI1bw2uqN–2jXoBLIM5d6L9RImvm8Vg8cBAiLpWA8Vw”,

“expires_in”: 7200,

“refresh_token”: “OezXcEiiBSKSxW0eoylIeAsR0GmYd1awCffdHgb4fhS_KKf2CotGj2cBNUKQQvj-G0ZWEE5-uBjBz941EOPqDQy5sS_GCs2z40dnvU99Y5CZPAwZksiuz_6x_TfkLoXLU7kdKM2232WDXB3Msuzq1A”,

“openid”: “oLVPpjqs9BhvzwPj5A-vTYAX3GLc”,

“scope”: “snsapi_userinfo,”

}

5. 再使用授权Access Token获取用户信息

url如下:

;openid=oLVPpjqs9BhvzwPj5A-vTYAX3GLc

返回如下

{

“openid”: “oLVPpjqs9BhvzwPj5A-vTYAX3GLc”,

“nickname”: “方倍”,

“sex”: 1,

“language”: “zh_CN”,

“city”: “Shenzhen”,

“province”: “Guangdong”,

“country”: “CN”,

“headimgurl”: “”,

“privilege”: []

}

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/192509.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-01 10:28
下一篇 2024-12-01 10:28

相关推荐

  • python强行终止程序快捷键

    本文将从多个方面对python强行终止程序快捷键进行详细阐述,并提供相应代码示例。 一、Ctrl+C快捷键 Ctrl+C快捷键是在终端中经常用来强行终止运行的程序。当你在终端中运行…

    编程 2025-04-29
  • Python程序需要编译才能执行

    Python 被广泛应用于数据分析、人工智能、科学计算等领域,它的灵活性和简单易学的性质使得越来越多的人喜欢使用 Python 进行编程。然而,在 Python 中程序执行的方式不…

    编程 2025-04-29
  • Python程序文件的拓展

    Python是一门功能丰富、易于学习、可读性高的编程语言。Python程序文件通常以.py为文件拓展名,被广泛应用于各种领域,包括Web开发、机器学习、科学计算等。为了更好地发挥P…

    编程 2025-04-29
  • Python购物车程序

    Python购物车程序是一款基于Python编程语言开发的程序,可以实现购物车的相关功能,包括商品的添加、购买、删除、统计等。 一、添加商品 添加商品是购物车程序的基础功能之一,用…

    编程 2025-04-29
  • 爬虫是一种程序

    爬虫是一种程序,用于自动获取互联网上的信息。本文将从如下多个方面对爬虫的意义、运行方式、应用场景和技术要点等进行详细的阐述。 一、爬虫的意义 1、获取信息:爬虫可以自动获取互联网上…

    编程 2025-04-29
  • Vb运行程序的三种方法

    VB是一种非常实用的编程工具,它可以被用于开发各种不同的应用程序,从简单的计算器到更复杂的商业软件。在VB中,有许多不同的方法可以运行程序,包括编译器、发布程序以及命令行。在本文中…

    编程 2025-04-29
  • Python一元二次方程求解程序

    本文将详细阐述Python一元二次方程求解程序的相关知识,为读者提供全面的程序设计思路和操作方法。 一、方程求解 首先,我们需要了解一元二次方程的求解方法。一元二次方程可以写作: …

    编程 2025-04-29
  • 如何使用GPU加速运行Python程序——以CSDN为中心

    GPU的强大性能是众所周知的。而随着深度学习和机器学习的发展,越来越多的Python开发者将GPU应用于深度学习模型的训练过程中,提高了模型训练效率。在本文中,我们将介绍如何使用G…

    编程 2025-04-29
  • Web程序和桌面程序的区别

    Web程序和桌面程序都是进行软件开发的方式,但是它们之间存在很大的区别。本文将从多角度进行阐述。 一、运行方式 Web程序运行于互联网上,用户可以通过使用浏览器来访问它。而桌面程序…

    编程 2025-04-29
  • 改善Python程序的90个建议pdf网盘

    本文将从多个方面对改善Python程序的90个建议pdf网盘进行详细阐述,帮助Python开发者提高程序的性能和效率。 一、代码优化 1、使用map函数或列表推导式代替for循环。…

    编程 2025-04-29

发表回复

登录后才能评论