2012-08-06 70 views
1

對不起,這個問題相當無知,但我對這兩種技術有點困惑。我在C#中編寫了一個使用Fleck的網絡服務器,並且一切都很好,但是我意識到我可能找不到可以運行.NET應用程序的託管提供程序。需要一些幫助,瞭解nodejs和socket.io

我想使用websockets,我發現socket.io是非常受歡迎的,但我不確定它到底是什麼。糾正我,如果我錯了,但是,它就像在javascript中編寫服務器,並運行與應用程序的node.exe JavaScript文件,然後服務器正在運行?人們如何找到提供這種服務的託管服務提供商?

最後,socket.io只是nodejs的擴展嗎?當你使用socket.io時,你是否必須用javascript編碼你的服務器?再一次,對於新手的問題感到抱歉,但我只是想在繼續之前瞭解一些基本的東西。謝謝。

+0

對於你的第一個問題,我只租了一臺虛擬服務器,它給了我完全的root權限,甚至比我之前的託管軟件包便宜。我還沒有看到在這裏提供nodejs的託管服務提供商。對於另一個問題,socket.io是一個websocket實現,它爲不支持websocket的舊瀏覽器提供回退功能。我個人也使用webgl,所以我根本不在乎舊版瀏覽器並使用'正常'websocket庫。 – Roest 2012-08-06 18:18:26

+0

@Roest:虛擬服務器聽起來很有趣。這種方法有什麼優點和缺點?此外,考慮到nodejs如何受到歡迎,它的網絡服務器託管服務如何受到如此有限的限制?人們如何使用它? – 2012-08-06 18:29:57

+0

優點和缺點,猜測最佳答案取決於。對我來說,職業球員是我完全控制的,可以運行諸如nodejs或異國apache mods之類的東西。缺點是我必須自己管理它(不是那麼糟),一旦我需要更多的權力,它就會變得昂貴,但我不會在不久的將來看到它。順便說一句,你可能想檢查這篇文章http://stackoverflow.com/questions/3648993/where-can-i-host-a-node-js-app – Roest 2012-08-06 18:38:43

回答

3

有幾家公司將承載您的節點應用程序。它與您提供文件的過渡Web主機不同,它們爲您提供文件。在使用節點時,您正在編寫實際的Web服務器。

一些流行的周圍都低於:

@Roest:虛擬服務器聽起來耐人尋味。這種方法有哪些優缺點 ?此外,考慮nodejs如何受歡迎 它的網絡服務器託管支持如此有限?人們如何使用它?

在使用虛擬服務器時,您會對服務器上運行的內容產生全面的擔憂。

優點 自由,你可以選擇你想要在你的機器上運行的所有軟件。很多時候使用nodejs時,你會想要一些定製軟件在你的應用程序中運行。大多數情況下,這是您的數據庫層,您可以選擇。

缺點 您必須對其進行維護。就像@Roest所說的,這對大多數人來說並不是什麼合適的東西,因爲這直接關係到虛擬服務器給你的自由,但這是你需要考慮的。

我認爲你看到有限的nodejs支持的原因是因爲它相對較新,而且它很容易設置你自己。

我想使用websockets,我發現socket.io真的很受歡迎 但我不確定它到底是什麼。糾正我,如果我錯了,但是,它是 它就像在javascript中寫一個服務器,並運行與node.exe應用程序的javascript 文件,然後服務器正在運行?

這幾乎就是nodejs是什麼,或者至少是你如何使用它。Nodejs本身就是您的服務器上運行的Google的V8 javascript引擎,以及大量的庫和C綁定,允許您以V8引擎不允許的方式與您的服務器進行交互。

這是一個的NodeJS網絡服務器的一個例子(A 非常有限一個)

var http = require('http'); 
http.createServer(function (req, res) { 
    res.writeHead(200, {'Content-Type': 'text/plain'}); 
    res.end('Hello World\n'); 
}).listen(1337, '127.0.0.1'); 
console.log('Server running at http://127.0.0.1:1337/'); 

它只是反應Hello World到每一個請求,總是返回200個狀態碼。

從這樣的事情到一個簡單的文件服務器是相當容易和快速,但少數人已經爲你解決這個問題。

http://expressjs.com/ - 非常強大的網絡服務器,但仍然給你很多自由。 https://github.com/nodeapps/http-server - 簡單的網絡服務器,我主要使用它作爲一個命令行工具,通過HTTP立即服務器上的文件。

最後,socket.io只是nodejs的擴展嗎?當您使用socket.io時,您是否必須在JavaScript中爲您的服務器編碼 ?再次,很抱歉 非常新手問題,但我只是想在繼續之前瞭解一些基本的 事情。謝謝。

socket.io among many others是nodejs的模塊。根據你的擴展定義,它可能是一個錯誤的詞使用。大多數情況下,使用socket.io時,您將使用現有的http服務器,然後進行擴展,或者使用socket.io封裝服務器。我寫了一個以前的explanation of how nowjs does this。我的猜測是socket.io非常相似。

要回答這個問題的大部分:是的,你仍然會用javascript寫你的代碼。您將只使用socket.io API。