C# 完成WebSocket demo

C# 完成WebSocket demo

在現在Time cost和Labor cost進入項目並佔據重要位置的開發理念里,當一款項目的目標、理念以及開發的要求非常明確時,怎樣減少時間、人力成本以及降低開發風險以及成為一個項目在開發初期需要確定的重要因素。

大道至簡 知易行難,作為一名開發人員站在開發的角度上來講,怎樣去攻克一個技術難題或者需要學習新的語言、技術去應用於新的項目,已經不會是最大的問題,而時間成本以及人力成本會是一個團隊以及公司去考慮的側重點。怎樣去減少這些開發成本最終達到同樣的期望效果,今天我給大家介紹一款產品:GoEasy, 簡單而強大的三方WebSocket。

我為什麼會用到GoEasy,最近公司推p2p新項目,在訂單提醒這一塊因為新項目配備開發人員較少,就算加班也不能在estimated time內完成。經過會議決定使用三方的產品來做這一塊。篩選中最後決定選擇看起來最簡單的GoEasy。

只需要9分鐘,從註冊到推送實現

1 登錄 www.goeasy.io

2 註冊賬號並登錄

3 登錄進入後台

我的應用→創建應用→選擇地區→獲取APP keys

這裡選擇地區有3個選項可以選擇,華東(杭州)、美國東部(弗吉尼亞)、新加坡,根據產品使用用戶所在地來選擇效果最佳

點開APP keys 查看

我們會獲得2個對應的key,一個只能用來訂閱channel來接收消息的Subscribe key和一個既可以發送消息也可以訂閱channel來接受消息的Common key

OK 現在用一個demo來展示,為什麼只需要9分鐘。

伺服器→客戶端

這裡我用C#來演示,當然 GoEasy適用於任何語言和瀏覽器。

先用C#寫一個Demo

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using system.net - Domain Name For Sale | Undeveloped;

using System.IO;

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

string postDataStr = "appkey=your app keyXXXXXXXXXXXXXXXXXXXXXXXXXXX";

//appkey

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("rest-hangzhou.goeasy.io");

request.Method = "POST";

request.ContentType = "application/x-www-form-urlencoded;charset=UTF-8";

request.ContentLength = Encoding.UTF8.GetByteCount(postDataStr);

Stream myRequestStream = request.GetRequestStream();

byte[] data = Encoding.UTF8.GetBytes(postDataStr);

myRequestStream.Write(data, 0, data.Length);

Console.WriteLine(data);

HttpWebResponse response = (HttpWebResponse)request.GetResponse();

Stream myResponseStream = response.GetResponseStream();

StreamReader myStreamReader = new StreamReader(myResponseStream,

Encoding.GetEncoding("utf-8"));

string retString = myStreamReader.ReadToEnd();

Console.WriteLine(retString);

Console.ReadLine();

myStreamReader.Close();

myResponseStream.Close();

}

}

}

用html 寫一個接收端

<html>

<head>

<script type="text/javascript" src="cdn-hangzhou.goeasy.io/"></script>

<script type="text/javascript">

var goeasy = new GoEasy({

appkey: your app keyXXXXXXXXXXXXXX

});

goeasy.subscribe({

channel: demo,

onMessage: function(message){

//收到消息的第一行,打出日誌,以這個時間作為檢查的標準

alert(收到:+message.content);

}

});

</script>

</head>

</html>

這裡我用的是Common key,在實戰項目中,接收端使用Common key會存在安全缺陷,建議使用Subscribe key。

還有需要注意的一點就是,CDN host和Rest host 取決於你在創建應用時的選擇。

最後從頁面接受結果可以看到與C#中demo content推送的內容一致。

同時,我們也可以完成客戶端→客戶端的推送

發送端

<!DOCTYPE html>

<html>

<html>

<head>

<script type="text/javascript" src="cdn-hangzhou.goeasy.io/"></script>

<script type="text/javascript">

var goeasy = new GoEasy({

appkey: your app keyXXXXXXXXXXXXXX

});

function publishMessage() {

var publishMessage = document.getElementById("content").value;

goeasy.publish({

channel: demo,

message: publishMessage,

onFailed: function (error) {

alert(error.code+" : "+error.content);

},

onSuccess: function(){

document.getElementById("content").value=;

}

});

}

</script>

</head>

<body>

<textarea rows="3" cols="20" id="content">

</textarea>

<button id="fasong" onclick="publishMessage()">Send</button>

接收端代碼不變,我們從發送端發送消息

最後接受成功

同樣的app key在不同的代碼以及環境中都能夠達到同樣的效果,GoEasy 在讓WebSocket變簡單的過程中為開發人員極大的減少了時間和人力成本,如果您對安全性有要求的話,GoEasy 付費項目中獨有的OTP 技術可以保護您的消息安全無憂。

從註冊到在您的項目中加入APP

key,您花到9分鐘了嗎?


推薦閱讀:

Spring boot+web Socket即時通訊
全雙工通信的 WebSocket

TAG:HTML5 | WebSocket | HTTP |