2013-10-17 27 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

也许有一些更简单的方法来做到这一点...如果我更了解你在做什么:)

相关问题