CocosCreator下websocket使用protobuf

一、环境

    操作系统 mac 10.12.2

    CocosCreator 1.5.1

二、正文

如果有人在上篇的文章中并没有理解,或者可以正常运行。大家可以继续参考这篇文章,文章中的代码是衔接上一篇的。

在script文件夹下新建GameServerManager,直接上代码:

var GameServerManager;
(function(GameServerManager) {
	var socket;
	var heartTimer;

	GameServerManager.readyState = {
		Connecting : 0,
		Connected : 1,
		disConnected : 2,
	}
	
	GameServerManager.connectServer = function() {
		socket = new WebSocket("ws://192.168.11.111:5188");
		socket.binaryType = 'arraybuffer';
		var self = this;
		socket.onopen = function() {
			console.log("onopen", this);
			if(self.onOpen) {
				self.onOpen();
			}
		}
		socket.onmessage = function(e) {
			if(self.onReceive) {
				self.onReceive(e.data);
			}
		}
		socket.onclose  = function() {
			if(self.onClose) {
				self.onClose();
			}
		}
	}

	function getSocketState() {
		return socket.readyState;
	}
	GameServerManager.getSocketState = getSocketState;

	GameServerManager.send = function(data) {
		if(socket.readyState == this.readyState.Connected) {
			socket.send(data);
		}
	}

	GameServerManager.initHeartTimer = function() {
		var self = this;
		function callback() {
			ProtobufManager.sendAutoID();
		}
		heartTimer = window.setInterval(callback, 1000);
	}

	GameServerManager.onOpen = function() {
		this.initHeartTimer();
	}

	GameServerManager.onReceive = function(data) {
		var dataView = new DataView(data);
		var length = dataView.getInt32(0, false);
		var id = dataView.getInt32(4, false);
		var command = dataView.getInt16(8, false);
		// console.info(length, id, command);
		var buffer =  new Uint8Array(length - 6) 
		for(var i = 0; i < length - 6; i++) {
			buffer[i] = dataView.getInt8(i + 8, false);
		}
	}

	GameServerManager.onClose = function() {
		window.clearInterval(heartTimer);
	}

})(GameServerManager || (GameServerManager = {}));

window.GameServerManager = GameServerManager;

之后,只要在游戏开始的地方调用

ProtobufManager.loadProtobuf();
就ok了。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值