express 通过app.use(express.static(__dirname + ‘/public’)); 来处理静态文件请求,js和css都是这样的,但是在用socket.io时候,有一个脚本路径是/socket.io/socket.io.js,这个路径的访问是通过何种机制访问得到的,请教一下,谢谢
应该是手动copy到目录来,大哥我也在做这个例子,express 3.0 是这样用吗var io= require(‘socket.io’).listen(app); 怎么我这有个提示:
Socket.IO’s listen()
method expects an http.Server
instance
as its first parameter. Are you migrating from Express 2.x to 3.x?
If so, check out the “Socket.IO compatibility” section at:
https://github.com/visionmedia/express/wiki/Migrating-from-2.x-to-3.x
info - socket.io started
var server = http.createServer(app).listen(app.get(‘port’), function(){ console.log(“Express server listening on port " + app.get(‘port’)); }); var io = require(‘socket.io’).listen(server); 换成这样,官网上有说; 那个socket.io.js文件,开始我也以为是手动copy到静态目录,但是发现,就算不copy,然后这样写: <script src=”/socket.io/socket.io.js" type=“text/javascript”></script> 也是没错的,所以我很奇怪是通过什么机制来加载的
@ChJJin 嗯 谢谢 ,你是在写聊天的例子吗 有什么好的参考没,网上有几个例子,没有注解,也怕代码因为版本问题各种错 ,好痛苦这几天呀
This is because the socket.io itself route this js request, and render static js file by it own.
牛人呀,你是怎么发现的
@mengrpg1 没懂。。能详细解释下么?
@booxood 我的理解是 一般我们在页面不是都引入很多外部文件吗,当读到那一句时,就会去服务器下载,特别的当遇到 socket.IO开头, 服务器做了特殊处理,回去node_models下相应的文件夹传给客户端,不知道这样理解对不对
@leizongmin 受教了
为什么我的客户端网页通过<script src=“socket.io/socket.io.js”></script>的方式加载socket.io却提示404了啊。。。模块文件夹里明明有这个啊。。求助啊
@leizongmin 学习了~ 3Q~
用这个 /socket.io/socket.io.js
**/**开头表示绝对路径,你那里没有用绝对路径,实际情况会根据你当前页面的路径而不同,容易出错。
@leizongmin 为什么socket.io需要这样做,而不是以静态文件的形式存下来,这样动态发送,有啥好处么?
@cony138 @leizongmin 谢谢两位管住,这个问题我已经解决的了。。因为当时我整个项目目录是自己搭建的,没用express生成,所以自己也没考虑建立静态文件目录(public那个)什么的。。。当时刚接触nodejs。。。
@cony138 其实是一个静态文件来的,而且也没强制要求一定要用/socket.io/socket.io.js这个路径,这只是socket.io为了方法使用者而已。 /socket.io/socket.io.js 这个文件是一个socket.io的浏览器客户端程序,放在任何地方都是可以的。
为什么现在用这个不能直接找到这个文件了
三楼的原理图看不到了啊 源码看不懂 小白求指教
你代码不是写了一句 var io = require(‘socket.io’).listen(server); 你还想知道什么