2013-03-07 89 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");