使用Nodejs作服务器连接Socket遇到的问题。

调试环境一切正常,连得上 ,将构建后的代码布署在node上后打开,连接socket时出现这个提示:
Uncaught ReferenceError: io is not defined

这是连接时使用的代码:
if (cc.sys.isNative) {
window.io = SocketIO;
} else {
require(‘socket.io’);
}
var socket = io(‘http://127.0.0.1:3000’);

请问有朋友遇过吗?


已自行解决,客户端必须这样写才行

if (cc.sys.isNative) {
window.io = SocketIO;
} else {
window.io = require(‘socket.io’);
}
var socket = window.io(‘http://127.0.0.1:3000’)

希望对遇到的朋友有帮助。

1赞

require(‘socket.io’); 是标准的 nodejs 模块引用~~出来的是个对象,在模块内不会赋值到 window 里面的,所以直接去用 io.xxx 是会报错的 = =。。。

请教一个问题
一个script里面
if (cc.sys.isNative) {
window.io = SocketIO;
}
else {
window.io = require(‘socket.io’);
}
另一个script里面
var socket = io(‘http://localhost:3000’);

在本地浏览器可以实现访问,发布成web版本就不行了(报错,io没有定义),
修改成
var socket = window.io(‘http://localhost:3000’);也是不行的(报错:window.io is not a function)

请教请教!!!

求解救啊

你肯定没看文档。。。 喏:http://www.cocos.com/docs/creator/scripting/network.html

关键点是:导入socketio,设置为插件脚本。这样,io就是一个全局变量了。也就是window.io了。
当然,还得在socketio.js上做hack,加一个是否是native的判断。具体原因,文档里有~

谢谢,马上看一下