我有一个SignalR JQuery客户端应用程序示例,该应用程序与GitHub JQuery示例几乎相同。如果我通过VS2008运行该应用程序,则会出现以下错误:
“ SignalR:必须先启动连接,然后才能发送数据。在.send()之前调用.start()”
如果按以下方式从浏览器中运行客户端应用程序:http://localhost/SignalRClient,则一切正常。
关于如何使用Visual Studio运行客户端的任何建议?
<div>
<script type="text/javascript">
$(function() {
var connection = $.connection('http://localhost/signalrserver/echo');
connection.received(function(data) {
$('#messages').append('<li>' + data + '</li>');
});
connection.start();
$("#broadcast").click(function() {
connection.send($('#msg').val());
});
});
</script>
<input type="text" id="msg" />
<input type="button" id="broadcast" />
<ul id="messages"></ul>
</div>
谢谢。
最佳答案
我也遇到了这个问题。由于.start()是一个异步事件,因此发生的情况是您在建立连接之前正在调用.send()。 .start()接受建立连接后触发的回调。您的代码将如下所示:
$(function() {
var connection = $.connection('http://localhost/signalrserver/echo');
connection.received(function(data) {
$('#messages').append('<li>' + data + '</li>');
});
connection.start(function() {
$("#broadcast").click(function() {
connection.send($('#msg').val());
});
});
});