netty做服務端支援ssl協議實現websocket的wss協議(客戶端為瀏覽器)
也是在網上查的資料,整理一下相互學習下
第一步:生成SSL證書:
因為是測試,直接使用jdk自帶的keytool工具生成自簽名證書(注:自簽名證書是不被瀏覽器認可的,只能用於測試),
--開啟cmd
--輸入命令(複製啊):keytool -genkey -keysize 2048 -validity 365 -keyalg RSA -keypass netty123 -storepass netty123 -keystore wss.jks
第二步:在ChannelPipeline新增SslHandler:
首先寫個工具類:SslUtil配置SSLContext
public static SSLContext createSSLContext(String type ,String path ,String password) throws Exception { KeyStore ks = KeyStore.getInstance(type); /// "JKS" InputStream ksInputStream = new FileInputStream(path); /// 證書存放地址 ks.load(ksInputStream, password.toCharArray()); //KeyManagerFactory充當基於金鑰內容源的金鑰管理器的工廠。 KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());//getDefaultAlgorithm:獲取預設的 KeyManagerFactory 演算法名稱。 kmf.init(ks, password.toCharArray()); //SSLContext的例項表示安全套接字協議的實現,它充當用於安全套接字工廠或 SSLEngine 的工廠。 SSLContext sslContext = SSLContext.getInstance("TLS"); sslContext.init(kmf.getKeyManagers(), null, null); return sslContext; }
新增SslHandler(放在第一個)
@Override public void initChannel(SocketChannel ch) throws Exception { SSLContext sslContext = SslUtil.createSSLContext("JKS","D://wss.jks","netty123"); //SSLEngine 此類允許使用ssl安全套接層協議進行安全通訊 SSLEngine engine = sslContext.createSSLEngine(); engine.setUseClientMode(false); ch.pipeline().addLast(new SslHandler(engine)); ch.pipeline().addLast(new IdleStateHandler(5, 0, 0, TimeUnit.SECONDS)); ch.pipeline().addLast("http-codec", new HttpServerCodec()); ch.pipeline().addLast("aggregator", new HttpObjectAggregator(65536)); ch.pipeline().addLast("http-chunked", new ChunkedWriteHandler()); ch.pipeline().addLast(new AcceptorIdleStateTrigger()); ch.pipeline().addLast("handler", new WebSocketHandler()); }
JS檔案的URL:
var url = "wss://localhost:8000/ws";
第三步:執行
執行服務端,在瀏覽器位址列輸入https://localhost:8000/ 瀏覽器會提示這是不安全的連線(瀏覽器不信任自簽名證書,如果有域名可以自己申請一個證書,網上有免費測試版的證書),新增例外信任,再在html頁面上右鍵獲得它的本地路徑 在瀏覽器中執行 連線成功
相關推薦
反射+代理實現 API Hook(以 ActivityManager 為例)
最近看Android招聘資訊,發現一個自己不太會的點 hook 機制,查了一下資料,現在整理一下。特別感謝acxingyun同學提供了詳細的姿勢。點選地址 什麼是 Hook hook 翻譯過來是鉤子的意思。 目的就是在事件傳送到終點前截獲並監控事件的傳輸
netty做服務端支援ssl協議實現websocket的wss協議(客戶端為瀏覽器)
也是在網上查的資料,整理一下相互學習下第一步:生成SSL證書: 因為是測試,直接使用jdk自帶的keytool工具生成自簽名證書(注:自簽名證書是不被瀏覽器認可的,只能用於測試), --開啟cmd --輸入命令(複製啊):keytool -genkey -ke
Springboot專案Netty做服務端並自定義Gson配置類解析資料包
簡述 Springboot專案中使用 Netty 作為服務端,接收並處理其他平臺傳送的 Json資料包,處理拆包、粘包及資料包中時間型別是 long 型別需轉成 ***Date***的情況。 專案流程 啟動專案,開啟Netty服務埠11111 載入
【轉】文件下載之斷點續傳(客戶端與服務端的實現)
http協議 當前時間 end box [] ada demo 服務端 sem 【轉】文件下載之斷點續傳(客戶端與服務端的實現) 【轉】文件下載之斷點續傳(客戶端與服務端的實現) 前面講了文件的上傳,今天來聊聊文件的下載。 老規矩,還是從最簡單粗暴的開始。那麽多簡單算簡單
go語言實現unix domain socket 客戶端/服務端
sock domain tin soc reader ted ips for urn /*server.go */package mainimport ( "bufio" "fmt" &quo
c++實現簡單的Http客戶端協議,WebRequest
最近要寫一個代理程式,軟體最終要跑在嵌入式裝置上,其中一部分是需要做一個簡單爬蟲程式,用來操作嵌入式裝置的Web服務上的資訊,我不想用第三方的任何庫,如是簡單看了下http協議,用一天時間實現了http協議的客戶端,實現Get,Post,UpFile(檔案上傳)等
hessian實現(客戶端服務端在同一個專案中)(轉)
Hessian是基於HTTP的輕量級遠端服務解決方案,Hessian像Rmi一樣,使用二進位制訊息進行客戶端和伺服器端互動。但與其他二進位制遠端呼叫技術(例如Rmi)不同的是,它的二進位制訊息可以移植其他非Java的語言中。 通過Servlet繫結服務 一、建立Hessian程式的4個步驟 定義
使用eclipse paho在java端實現MQTT訊息的收發(客戶端與服務端例項)
一、MQTT(訊息佇列)簡介 MQTT(MQ Telemetry Transport)是IBM開發的一種網路應用層的協議,提供輕量級的,支援可釋出/可訂閱的的訊息推送模式,使裝置對裝置之間的短訊息通訊變得簡單,比如現在應用廣泛的低功耗感測器,手機、嵌入式計算機
Android專案開發筆記之登入註冊模組實現(客戶端+服務端)
寫在前面 斷斷續續開發了幾個月的App終於告一段落,雖然它可能還很不完美,不過作為上手Android的第一個完整專案,確實從中學到了蠻多,所以開個系列記錄一下~本篇先從基本上每個App都會有的登入註冊講起,包含自動登入、記住密碼功能的實現=w= 實現
建立資料庫並實現TCP通訊,客戶端登陸伺服器身份驗證之服務端程式設計
m_pRecordsetB->Open((_variant_t)flsql,dlg->m_pConnectionB.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText);//開啟資料庫獲得符合條件
jax-ws實現Webservice入門教程 (客戶端呼叫服務端實現)
前兩節中簡單的介紹了一下基本的JAX-WS API的使用,這一節更進一步的介紹一些其他的內容 一、wsimport工具的使用 在第二節中(http://liugang594.iteye.com/blog/1343608),可以看到要手動建立一個client端進行一次正確的呼叫,需要關注的東西還是挺
Python實現udp協議的簡單伺服器和客戶端通訊
簡單socket程式在兩臺電腦之間傳輸訊息,分為客戶端和服務端,分別在兩臺電腦上執行後即可進行簡單的訊息傳輸,也可以在一臺電腦上測試,設定兩個不同的埠即可 以下是程式碼在一臺電腦上執行,開兩個終端即可
NET(C#)接入Dubbo服務,Zookeeper作為Dubbo服務的註冊中心,實現thrift協議訪問介面(1)
專案要接入thrift,面對完全陌生的東西,學習的過程記錄。 開發環境: 系統:Windows 工具:VS2012 最新版thrift 下載:http://thrift.apache.org/download 點選下載thrift-0.9.3.exe,放在某個目錄下。我
.net core 和 WPF 開發升訊威線上客服與營銷系統:使用 TCP協議 實現穩定的客服端
本系列文章詳細介紹使用 .net core 和 WPF 開發 升訊威線上客服與營銷系統 的過程。本產品已經成熟穩定並投入商用。 線上演示環境:[https://kf.shengxunwei.com](https://kf.shengxunwei.com) 注意:演示環境僅供演示交流與評估,不保證 7x24 小
python實現ftp(客戶端)
index 登錄 容器 socket per add gbk 默認值 interact 該文檔為用python3實現ftp上傳下載等功能。 1 import optparse 2 import socket 3 import json,os 4 import sh
Nginx+keepalived做雙機熱備,實現負載均衡(主主模式)
nginx keepalive Keepalived: 簡介:Keepalived的作用是檢測服務器的狀態,如果有一臺web服務器宕機,或工作出現故障,Keepalived將檢測到,並將有故障的服務器從系統中剔除,同時使用其他服務器代替該服務器的工作,當服務器工作正常後Keepali
(九)springmvc之json的數據請求(客戶端發送json數據到服務端)
index.jsp null 字符串 n-2 func mda 客戶 請求 spring index.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncodi
unity_小功能實現(客戶端相互通信功能)
直接 endpoint 客戶端和服務器端 network hat sockets odi family void 服務器端:在VS中新建項目,用於服務器的搭建 using System;using System.Collections.Generic; using
用redis實現悲觀鎖(後端語言以php為例)
號碼 blank mys 時間 先來 ng-click print -m 兩種 1479 鎖機制 通常使用的鎖分為樂觀鎖,悲觀鎖這兩種,簡單介紹下這兩種鎖,作為本文的背景知識,對這類知識已經有足夠了解的同學可以跳過這部分。 樂觀鎖 先來看下百度百科上的解釋
Android 音視頻深入 十五 FFmpeg 實現基於Rtmp協議的推流(附源碼下載)
音視頻 FFmpeg Rtmp 推流 源碼地址https://github.com/979451341/Rtmp 1.配置RTMP服務器 這個我不多說貼兩個博客分別是在mac和windows環境上的,大家跟著弄MAC搭建RTMP服務器https://www.jianshu.com/p/6fce