私はいくつかの html/js/css と画像をブラウザーベースのクライアントに提供する C# Web サーバーを持っています。
websocket C# サーバーからメッセージを受信しながら、javascript を使用して動的にページを作成し、画像と div を埋めます。
ときどき、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);
}
//