socket.io,io没有定义(JS错误)
我刚刚开始使用socket.io,它给客户端页面上的JS错误
io没有定义
如何解决这个问题?
把<script src="http://yournodeserver/socket.io/socket.io.js"></script>
放到你的代码中
或者,您可以使用Socket.io CDN :
<script src="https://cdn.socket.io/socket.io-1.0.0.js"></script>
使用快递时我遇到了同样的问题。 即使把服务器:端口内的脚本将无法正常工作。服务器启动后,我会让套接字侦听该端口,这是我猜guess.Changing下面的工作正常
var app = express(); app.set('port', process.env.PORT || 3000); var server = http.createServer(app); var io = require('socket.io').listen(server); server.listen(app.get('port'));
在客户端,我只包含脚本
<script src="/socket.io/socket.io.js"></script>
我有一个套接字应用程序,我的服务器(不是CDN)正在提供socket.io.js脚本。 因此,尽pipeEmmerman正确地说您需要将脚本标签包含在您的客户端HTML代码中,但是如果您的后端发生故障,资产将不会被加载。 一种方法是在尝试使用socket.io之前编写一个客户端JS脚本来检查io。 如果它不存在(undefined / null),那么你可以有条件地显示其他的东西,比如“server down”,或者在我的情况下,我将设置一个定时器来定期检查,直到服务器恢复。
[更新2]结束了不得不包括脚本标记,检查io
对象的存在和10秒后做一个window.location.reload()(使用setTimeout
)(最终希望发现脚本加载和io
存在,之后我可以连接到套接字服务器。)
[更新]我正在加载脚本与ajax调用,而不是使用html脚本标记。 然后用定时器,我定期检查脚本是否会加载 – 最终会在服务器恢复/重新启动的时候。 jQuery引用dynamic加载JS脚本: http : //api.jquery.com/jQuery.getScript/
将你的客户端代码包装在一个'$(document).ready()'中,用于jQuery或其他类似库的函数。 这样你就可以确定你的代码在库加载后运行。
<script src="http://cdnjs.cloudflare.com/ajax/libs/socket.io/0.9.16/socket.io.min.js"></script>
这是要包含的最新版本的socket.io。
http://socket.io/download/ – 最新cdn官方网页。