2013-10-17 77 views
0

我有一種情況,我不得不從SQL Server調用一個javascript方法。我還沒有找到任何解決方案來做同樣的事情。我發現了一件事情,我可以從SQL Server調用Web服務,但現在問題是「我們可以從Web服務調用JavaScript函數(就像我們可以在代碼後面的aspx頁文件中所做的那樣)」?我們可以從WebService調用JavaScript函數嗎?

請幫

回答

4

那麼,這取決於你的意思。如果我沒有弄錯免費實時通信平臺背後的傢伙xSockets已經能夠使用SQL Server中的已編譯存儲過程來使用xSockets向連接的客戶端發送調用(例如使用WebSockets)。 我不是說這是你應該做的事,我說「我認爲他們已經做到了」。你會在他們的頁面上找到聯繫信息,或者只是在推特上用#xsockets哈希推特,他們會迴應。

-2

不,你不能從一個Web服務的服務器調用客戶的JavaScript函數。

0

您可以使用Server-Sent Events這樣做,這在最新的瀏覽器中受支持。

的PHP:

header('Content-Type: text/event-stream'); 
header('Cache-Control: no-cache'); 

echo "id: " . time() . " " . PHP_EOL; 
echo "data: $message" . PHP_EOL; 
echo PHP_EOL; 
ob_flush(); 
flush(); 

的JS:

var source = new EventSource('/php'); 
source.onmessage = function(e) { 
    console.log(e.data); 
}; 
+0

要添加一些額外的信息... EventSource告訴瀏覽器保持與服務器的連接。如果連接丟失,瀏覽器將自動重新連接。 – Pappa

0

您可以從Web服務 「呼」 的JavaScript直接...或者更正確地講過,你可以使用發佈/訂閱模式從您的webservice發佈消息並在您的javascript中訂閱它。

就像@Daniel說的,我們(XSockets)從一個編譯存儲過程調用了javascript,但那是幾年前...我認爲這會更容易讓你採用這種方法「調用」javascript來自web服務。

要做到這一點web服務之間和JavaScript可能是這樣的...... JAVASCRIPT

//Setup a subscription for the event 'foo' 
conn.on('foo', function(data){ 
    console.log('foo - some data arrived from the webservice', data); 
}); 

C#(或VB,如果你願意的話)

//Connect to the realtime server and the default controller generic 
var conn = ClientPool.GetInstance("ws://127.0.0.1:4502/Generic", "*"); 
//We send an anonymous message here, but any object will work. 
conn.Send(new { Message = "Hello JavaScript from C#" },"foo"); 

完整的示例here

也許有一些更簡單的方法來做到這一點...如果我更瞭解你在做什麼:)

相關問題