c#SocketIO4NetClient訪問node js

來源:互聯網
上載者:User

標籤:

提到Node,不能錯過的是WebSocket協議。它與Node之間的配合堪稱完美,其理由有兩條。

1.WebSocket用戶端基於時間的編程模型與Node中自訂事件相差無幾。

2.WebSocket實現了用戶端與服務端之間的長串連,而Node事件驅動的方式十分擅長與大量用戶端保持高並發串連。

----《深入淺出Nodejs》

參考資料

GIT nodejs-socketio-chat

GIT socket.io

SocketIO4NetClient

在Node的學習過程中,最使我感興趣的就是socket.io模組,在git上也有不少大牛做的node之間的訪問模組,覺得大體上相差不多,有的區別在於使用方法和舒適度上,但經過node中很多知名模組的配合下,代碼的整潔度已經讓習慣順序邏輯編程的人覺得很舒服,而且在適當的時候 根據自己的意願使用並行,這種邏輯帶來的快感 ,有時,是讓開發人員很爽的一件事。

再說會用vs串連node服務端時,使用socket.io模組就稍稍有些吃力,研究了兩天,在網上找到SocketIO4NetClient。編譯後是dll檔案,在項目中可直接引用,在unity用戶端裡 放在項目根目錄下就會自動解析,但在unity發布到不同的平台時,會出現一些問題,解決方案是將項目源碼匯入到unity項目中,經過unity編譯後發行就緒到各平台運行。

socket.ionode服務端
$npm install socket.io -g 

首先在命令列安裝socket.io模組,如在項目中使用時報錯“not found module socket.io”,則要在項目目錄下執行$npm install socket.io,在項目根目錄產生的 node_modules 裡面會添加socket.io模組,並成功引用。

var app = require(‘express‘)();var http = require(‘http‘).Server(app);var io = require(‘socket.io‘)(http);app.get(‘/‘, function (req, res) {    res.end(‘welcome to socket demo ‘);});http.listen(3000, function () {    console.log(‘server localhost:3000 is start‘);});

為了便於配置,這裡使用了express架構,提示找不到模組的 可以像安裝socket.io模組方式,安裝express。

代碼中在訪問根目錄時候,會返回字串 welcome to socket demo ,node將監聽3000連接埠。

io.on(‘connection‘, function (socket) {    socket.on(‘message‘, function (obj) {        io.emit(‘message‘,obj);    });});

以上代碼可以理解為,在服務端接收名稱為 connection 訪問時,在socket中 監聽message事件,將傳入的obj參數,推送給用戶端。

c#用戶端

首先將源碼中的dll檔案添加到項目引用中

{
Client socket = new Client("http://localhost:3000"); socket.Opened += clien_Opened; socket.Message += clien_Message; socket.SocketConnectionClosed += clien_SocketConnectionClosed; socket.Error += clien_Error;

socket.On("connection", (fn) =>
{
Console.WriteLine("connect enevt start");

socket.Emit("messgae", reJson);
});


 socket.Connect();
}

void clien_Error(object sender, ErrorEventArgs e)
{
Console.WriteLine("a error show"+e.Message);
}

void clien_SocketConnectionClosed(object sender, EventArgs e)
{
Console.WriteLine("socket connection succeed!");
}

void clien_Message(object sender, MessageEventArgs e)
{
if (e != null && e.Message.Event == "message")
{

}
}

void clien_Opened(object sender, EventArgs e)
{
Console.WriteLine("socket was open...");
}

 

c#SocketIO4NetClient訪問node js

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.