我需要一些帮助才能使代码写入Socket.IO< 0.9适用于较新版本,如1.3:
var port = 843;
var io = require('socket.io').listen( port );
io.enable('browser client minification'); // send minified client
io.enable('browser client etag'); // apply etag caching logic based on version number
io.enable('browser client gzip'); // gzip the file
//io.set('log level', 1);
io.sockets.on('connection', function (socket) {
socket.on('woot_send', function(op){
socket.broadcast.emit('woot_receive', op);
if( op.type == 'cursor-create' && Object.keys(io.connected).length == 1 )
socket.emit('woot_receive', {type: 'contents-init', contents: "Sample initial content that might be coming from permanent storage..."});
});
socket.on('woot_save', function(contents){
console.log(contents);
});
});
导致错误:
/home/celso/woot/node/app.js:4
io.enable('browser client minification'); // send minified client
^
TypeError: undefined is not a function
at Object.<anonymous> (/home/celso/woot/node/app.js:4:4)
at Module._compile (module.js:460:26)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Function.Module.runMain (module.js:501:10)
at startup (node.js:129:16)
at node.js:814:3
谢谢!
答案 0 :(得分:2)
从版本1.0.0开始,socket.io
删除了缩小版,etag和gzip。使用API不再存在io.enable
函数,这就是它抛出错误的原因。
SocketIO现在提供带有gzip压缩和缩小版本的CDN。使用此选项可使您的客户端使用CDN。
<script src="https://cdn.socket.io/socket.io-1.2.0.js"></script>
引入1.0.0时的SocketIO,指定了described here的CDN传递方法。具体来说,CDN(由Google zopfli提供)提供高级别的压缩,适当的缓存支持和内置的SSL支持。
SocketIO作者的建议是:Originally listed in this closed Pull Request
此处存在相同主题的旧SO Question,但不包含CDN的最新版本。
如果您遇到io.enable
以外的问题,可以找到migrating from 0.9 to higher versions of SocketIO的指南。
因此,您应该使用版本0.9中的io.enable
函数删除行,并允许客户端使用上面列出的CDN中的socket.io
。