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官方网页。