cocos creator socket.io 與 node.js socket.io通訊
阿新 • • 發佈:2019-01-12
1)客戶端
if (window.io == null){ window.io = require("./3rd/socket-io.js"); } var socketio = { sio: null, connect: function (url) { var self = this; var opts = { 'reconnection': true, 'force new connection': true, 'transports': ['websocket', 'polling'] } this.sio = window.io.connect(url, opts); // this.sio.on("reconnect", function () { console.log("reconnection"); }); // this.sio.on("connect", function (data) { self.sio.connected = true; console.log("connected!!!"); self.send("your_echo", JSON.stringify({ stype: "auth", ctype: "login", data: { name: "jianan", pwd: 123456 } })) }); // this.sio.on("disconnect", function () { console.log("disconnect"); self.sio.connected = false; }); // this.sio.on("connect_failed", function () { console.log("connect_failed"); self.sio.connected = false; }); // this.sio.on("your_echo", function (data) { console.log("client rcv data=" + data); }); }, send: function (event, data) { if(this.sio.connected){ this.sio.emit(event, data); } }, close: function () { if(this.sio && this.sio.connected){ this.sio.connected = false; this.sio.disconnect(); this.sio = null; } } } module.exports = socketio;
var socketio = require("./socketio.js");
cc.Class({
extends: cc.Component,
properties: {
},
// LIFE-CYCLE CALLBACKS:
// onLoad () {},
start () {
// websocket.connect("ws://127.0.0.1:6080/ws");
socketio.connect("127.0.0.1:6081");
},
// update (dt) {},
});
需要特別注意的是:客戶端引入的這個第三方的socket.io模組版本一定要和npm安裝的伺服器的socket.io一致才行,否則可能出現連不上的情況。 而使用websocket,一般客戶端已經封裝好了這個模組,因此更為簡單一點。 推薦使用websocket而不是socket.io
2)伺服器
var socket_io = require("socket.io"); var sio = socket_io(6081); sio.sockets.on("connection", function (socket) { console.log("client coming"); socket.on("your_echo", function (data) { console.log("server rcv data=" + data); socket.emit("your_echo", data); }); socket.on("disconnect", function (data) { console.log("disconnect"); }); });