2013-03-07 19 views
0

我有一個小小的聊天應用程序,我正在用socketio編寫。我在Chrome和Firefox中都可以使用這些作品,但Internet Explorer 7-9都存在問題。在Internet Explorer中只有socketio問題

我已經在socket.io.js之前和之後包含了WebSocketMainInsecure.swf和WebSocketMain.swf(不在同一時間),並且我得到錯誤。

這是錯誤,http://screencast.com/t/uUsnyGLV 我可以告訴它與flash/swf對象有關。這是我包括瑞士法郎,

<object width="0" height="0"> 
    <param value="resources/lib/socketio/WebSocketMainInsecure.swf"> 
    <embed src="resources/lib/socketio/WebSocketMainInsecure.swf"> 
    </embed> 
</object> 
<script type="text/javascript" src="resources/lib/socketio/socket.io.js"></script> 

任何想法我做錯了什麼? 謝謝!

編輯 - 在查看socket.io的dev版本中的錯誤後,它看起來像缺少id爲webSocketFlash的元素。我嘗試添加一個帶有該id的iframe,並嘗試將id添加到object標籤。儘管如此,仍然有相同的錯誤。

我也在nodejs中有這個配置。

io.set('transports', [ 
    'websocket' 
    , 'flashsocket' 
    , 'htmlfile' 
    , 'xhr-polling' 
    , 'jsonp-polling' 
]); 

而且我在3000端口上運行和的NodeJS端口80上

+1

我不是英雄在node.js如果這是什麼,但你可以刪除生產settigs? https://github.com/LearnBoost/socket.io/wiki/Configuring-Socket.IO類似瀏覽器客戶端縮小和日誌級別。看看你如何設置NODE_ENV標誌並設置一個環境變量來啓動你的應用程序時進行調試。 – HMR 2013-03-07 04:20:50

+0

@HMR我使用非縮小版本更新了錯誤消息 – sissonb 2013-03-07 04:38:21

+0

不知道您應該如何設置套接字以及應該根據您的設置動態生成多少html,但該對象以後沒有ID它嘗試獲取該(flash)對象的代碼:document.getElementById(「webSocketFlash」)並返回null。然後它會嘗試調用導致錯誤的空對象的方法。請給您的<對象一個匹配的ID或再次檢查手冊。也許有人在websocket有更多的經驗可以給你一個提示。 – HMR 2013-03-07 05:06:54

回答

0

服務我的文件與Apache,我發現這個問題。我正在使用location.origin來創建我這樣的插槽,

var socket = io.connect(location.origin + ":3000"); 

但IE沒有location.origin。現在我正在使用這個,

var socket = io.connect(location.protocol + "//" + location.host + ":3000");