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/zh-tw/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

發表回復

登錄後才能評論