前提・実現したいこと
WebSocketでローカルのC#で作成したネイティブアプリに、外部に設置したWebサーバーのWebアプリケーションからMicrosoft Edgeで通信したい。
InternetExplorer11やGoogle Chromeからは、通信できます。
発生している問題・エラーメッセージ
Edgeのデバッカで見ると
SCRIPT12029: SCRIPT12029: WebSocket Error: Network Error 12029, サーバーに接続できませんでした
と表示されます。
該当のソースコード
JavaScript側のソース
function connectSocketServer(callback) {
var support = "MozWebSocket" in window ? 'MozWebSocket' : ("WebSocket" in window ? 'WebSocket' : null);
if (support == null) {
return;
}
if( ws != null){
ws.close();
}
console.log("* Connecting to server ..");
// create a new websocket and connect
ws = new windowsupport;
ws.onmessage = function (evt) {
var json = evt.data;
var data = JSON.parse(json);
if( data["command"] == "add_message_to_browser"){
var message = "[" + data["time"] + "] 受信:" + data["message"];
add_message(message);
}
};
ws.onopen = function () {
console.log('* Connection open');
if( typeof callback != "undefined" ){
callback("open");
}
};
ws.onclose = function () {
console.log('* Connection closed');
if( typeof callback != "undefined" ){
callback("close");
}
}
}
C# 側のソース
private void Form1_Load(object sender, EventArgs e)
{
frm = this;
try {
var server_config = new SuperSocket.SocketBase.Config.ServerConfig()
{
Port = 2012,
Ip = "Any",
MaxConnectionNumber = 100,
Mode = SuperSocket.SocketBase.SocketMode.Tcp,
Name = "SuperWebSocket Server",
MaxRequestLength = 1024 * 1024 * 10,
};
setup_server(ref server, server_config);
}
catch(Exception ex)
{
MessageBox.Show("アプリケーション起動に失敗しました。");
Application.Exit();
}
}
private void setup_server(ref WebSocketServer server, SuperSocket.SocketBase.Config.ServerConfig serverConfig)
{
var rootConfig = new SuperSocket.SocketBase.Config.RootConfig();
server = new SuperWebSocket.WebSocketServer();
server.Setup(rootConfig, serverConfig);
//イベントハンドラの設定
server.NewSessionConnected += HandleServerNewSessionConnected;
//メッセージ受信
server.NewMessageReceived += HandleServerNewMessageReceived;
//切断
server.SessionClosed += HandleServerSessionClosed;
//サーバー起動
server.Start();
}
試したこと
InternetExplorer11やGoogle Chromeからは、同じ条件で通信できます。
ローカルのIIS上から起動したWEBアプリからはEdgeでも通信できます。
InternetExplorer11は最初は通信できませんでしたが、インターネットオプション→セキュリティ→ローカルインターネットの「他のゾーンにしていされてい・・・」のチェックをはずしたら通信できました。Edgeは、about:flagsから「localhostのループバックを許可する」にチェックは入っていましたが通信できません。また、wssで通信しても状況は同じでした。クロスドメインが原因でしょうか?
よろしくお願いします。
補足情報(FW/ツールのバージョンなど)
ローカルパソコンは、 Windows10でDifenderのみ起動しています。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。