2013-04-16 68 views
1

我有一個使用XSocket的asp.net mvc3 web應用程序,它在本地工作正常,但它不在我的Intranet上。XSocket在本地主機上正常工作,但不在Intranet環境中

我配置了xsockets windows服務並且運行正常。 我已經將我的「插件」(DLL和依賴關係)複製到正確的目錄並且運行良好。

問題是當我嘗試通過Intranet訪問應用程序時,連接總是說關閉。

我是否需要指向特定的IP地址/服務器名稱?

我是運行在本地主機精細的JavaScript代碼:

var url = "ws://127.0.0.1:4507/"; 
var controller = "Chat"; 
var mensajes = $('#messages'); 
var mensaje = $('#message'); 

var ws = new XSockets.WebSocket(url + controller); 

function send() { 
    if (mensaje.val() != '') { 
     ws.trigger('sendall', { message: mensaje.val() }); 
     mensaje.attr('value', ''); 
    } 
} 

$(function() { 
    ws.bind(XSockets.Events.open, function() { 
     console.log("opened"); 
    }); 
    ws.bind(XSockets.Events.close, function() { 
     console.log("closed"); 
    }); 
    ws.bind(XSockets.Events.onError, function (err) { 
     console.log("error", err); 
    }); 
    ws.bind('sendall', function (mensaje) { 
     console.log(mensaje); 
     mensajes.prepend($('<div>').text(mensaje)); 
    }); 

    mensaje.on('keyup', function (e) { 
     if (e.which == 13 || e.keyCode == 13) { 
      e.preventDefault(); 
      send(); 
     } 
    }); 

    $('#publish').click(function() { 
     send(); 
    }); 
}); 

預先感謝您。

+0

嗨,你有一個自定義的配置?我看到你在127.0.0.1:4507上運行,我想你的本地機器上面的例子是基於? 是的,如果服務器運行在instane上; 192.168.0.100,您需要將該設置作爲配置類中的Uri,以及您需要在您的JavaScript中使用ws://192.160.0.100/Chat http://xsockets.net/api/net -c /創建自定義配置插件 – dathor

+0

感謝您的回答。我會再次嘗試使用自定義配置... –

+0

你知道我需要實現CustomConfigurationLoader嗎?我有這樣的: [導出(typeof運算(CustomConfigurationLoader))] 公共類ChatController:XSocketController { 公共XReply SendAll(字符串消息){ 返回 新XReply(消息)。ToAll(); } } 現在我的javascript看起來像: var ws = new XSockets.WebSocket(「ws://192.168.1.102:4507/Chat」,「Chat」,null); 但我收到此錯誤信息: 錯誤 對象{CUSTOMMESSAGE = 「處理函數的名稱並沒有在加載的插件中發現」 ,類型= 「XSocketException」 ,消息= 「」 } –

回答

3

首先,您需要配置您的服務器以使Uri指向您的計算機地址*(不是本地主機,不是127.0.0.1!)。然後這樣的:

var url = "ws://127.0.0.1:4507/"; 

需要到該地址完全一致(也可以是一個域名,但對於初學者來說,更好地與IP做到這一點)。

此:

var ws = new XSockets.WebSocket(url + controller); 

需要看起來像:

var ws = new XSockets.WebSocket("ws://my.ip.add.res:myport/myController", myController, null); //null can contain an array of parameters that you want to send to a server, but if you are just starting, leave this with null 

此外,當我與我的配置掙扎,很多次我咬我的枕頭,因爲我是用不同的端口,並試圖忘了防火牆。所以不要忘記它。 :)

我會在這裏等30-40分鐘多,然後我要睡覺,如果你有任何問題,並會在這個時間範圍內作出迴應,我會留在這裏,並試圖幫助你,因爲我也正在經歷這一點,它傷得很慘。 :)

PS。你也可以聯繫開發人員[email protected],他們真的很酷的傢伙,一定會幫助你!

*編輯:通過計算機地址我的意思是計算機,即承載xsockets服務器。

+0

感謝您的回答。顯然,127.0.0.1只是用於測試環境。防火牆不是問題,我已經配置了...我將再次嘗試使用自定義配置... –

+0

您是否知道我需要實現CustomConfigurationLoader的位置?我有這樣的: [導出(typeof運算(CustomConfigurationLoader))] 公共類ChatController:XSocketController { 公共XReply SendAll(字符串消息){ 返回 新XReply(消息).ToAll(); } } 現在我的javascript看起來像: var ws = new XSockets.WebSocket(「ws://192.168.1.102:4507/Chat」,「Chat」,null); 但我收到此錯誤信息: 錯誤 對象{CUSTOMMESSAGE = 「處理函數的名稱並沒有在加載的插件中發現」 ,類型= 「XSocketException」 ,消息= 「」 } –

+0

@JoaquinAlberto:我假設你使用的是XSockets 2.5(最新的)。你不需要像'ChatController'上的'[Export(typeof(CustomConfigurationLoader))]''。另外,'ChatController'是一個控制器,而不是一個配置文件。如果你想使用自定義配置,它需要如下所示:'http:// bit.ly/11gBMiy',你只需將它放在你的'myProject.XSocketsNET.XSocketServerPlugins'命名空間中。 – ojek

相關問題