我有一个 C# 网络服务器,它为基于浏览器的客户端提供一些 html/js/css 和图像。
我使用 javascript 动态创建页面,填充图像和 div,同时从 websocket C# 服务器接收消息。
有时,我从 websocket 收到一条消息,并尝试访问 web 服务器中可能受保护的资源。
我为此有一些自定义的 http 服务器事件(例如 406),否则浏览器会弹出一个对话框,用于摘要身份验证登录。
我想知道是否有办法将所有 406 事件引导到同一个函数中,比如说
RegisterHttpEventHandler(406,myFunction);
我想我可以将任何请求/动态负载包装在 try 和 catch 中,尽管我喜欢一种更简洁的方法。
编辑
这是我到目前为止实现的工作流的一个示例,并且工作正常。
// Websocket definition
var conn = new WebSocket('ws://' + addressIP);
// Websocket receiver callback
conn.onmessage = function (event) {
// my messages are json-formatted
var mObj = JSON.parse(event.data);
// check if we have something nice
if(mObj.message == "I have got a nice image for you"){
showImageInANiceDiv(mObj.ImageUrl);
}
};
// Dynamic load image
function showImageInANiceDiv(imgUrl )
{
var imgHtml = wrapUrlInErrorHandler(imgUrl);
$("#imageBox").html(imgHtml);
}
// function to wrap everything in an error handler
function wrapUrlInErrorHandler(Url)
{
return '<img src="' + Url + '" onerror="errorHandler(\''+ Url +'\');"/>';
}
// function to handle errors
function errorHandler(imgUrl)
{
console.log("this guy triggered an error : " + imgUrl);
}
//