我阅读了各种教程并观看了视频,我尝试了所有这些,但似乎没有任何效果。
我的猜测是
<script src="/Scripts/jquery-1.10.2.min.js"></script>
<script defer src="https://use.fontawesome.com/releases/v5.0.6/js/all.js</script>
<script src = "/Scripts/jquery.signalR-2.3.0.min.js"></script>
<!-- <script src="http://localhost:9092/signalr/hubs"></script> -->
<script src="~/signalr/hubs"></script>
代码行:
<script src="~/signalr/hubs"></script>
导致这个错误:
hubs:1 Uncaught SyntaxError: Unexpected token <
我试过用这个代替:
<script src="http://localhost:9092/signalr/hubs"></script>
但问题是它看不到我的集线器。根据教程,他们说我必须能够导航到:
/signalr/hubs or /signalr/signalr/hubs
但顺便说一下,这两者都会让我进入 404 错误页面,这是我服务器上的代码:
启动.cs
app.Map("/signalr", map =>
{
var hb = new HubConfiguration()
{
EnableJSONP = true,
EnableJavaScriptProxies = true,
EnableDetailedErrors = true
};
map.RunSignalR(hb);
});
app.MapSignalR();
并尝试在我的组件上访问它:
componentDidMount() {
var connection = $.hubConnection();
// var hubConnection = connection.createHubProxy('Chat');
connection.url = '~/signalr';
connection.start({})
.done(function (a) {
console.log('================',a)
console.log('Now connected, connection ID=' + connection.id);
console.log(connection);
console.log(connection.chatHub);
//$.connection.chat.server.tachChatHub();
connection.chatHub.server.tachChatHub();
})
.fail(function (e) { console.error('Could not connect ' + e); });
}
它说连接已建立,并给了我一个连接 ID。但是当我记录 connection.chatHub 时,它说未定义因此我无法触发内部功能......
这是集线器的代码:
public class ChatHub : Hub
{
public void TachChatHub(string name, string message)
{
Clients.All.addNewMessageToPage(name, message);
}
}
对此有什么想法吗?我无法让它工作...
编辑:
经过大量研究,我发现在运行 signalR 之后应该创建一个名为“signalr”的文件夹,但它并没有在我的文件夹中创建。也许我在这里遗漏了一些东西......
最佳答案
修复了有关 Negotiate Made the connection start Like this 的问题:
$.connection.hub.start({withCredentials:false})
.done(() => {
console.log('Connected')
})
.fail((e) => {
console.log('Could not connect ' + e);
});
显然,我之前的 cors 设置阻止了它,因此我不需要将凭据传递给服务器,CORS 设置就可以挂接到之前的设置。
现在一切都按照我的预期工作:)
关于c# - 在我的 React 应用程序上实现 SignalR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52051716/