在cocos creator 中使用websocket
生活随笔
收集整理的這篇文章主要介紹了
在cocos creator 中使用websocket
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
客戶端
參考:https://allknowboy.com/posts/e8f856f4/
NetConfig.js
/*** 當前的網絡配置*/ module.exports={host:"ws://localhost",port:3000};NetControl.js
/*** Created by Administrator on 2018/4/17 0017.*/ //定義全局的變量 window.onfire=require("onfire"); //處理事件的類庫 var netConfig=require('NetConfig'); var NetControl={_sock:{}, //當前的webSocket的對象connect: function () {if(this._sock.readyState!==1){//當前接口沒有打開//重新連接this._sock = new WebSocket(netConfig.host+":"+netConfig.port);this._sock.onopen = this._onOpen.bind(this);this._sock.onclose = this._onClose.bind(this);this._sock.onmessage = this._onMessage.bind(this);}return this;},_onOpen:function(){onfire.fire("onopen");},_onClose:function(err){onfire.fire("onclose",err);},_onMessage:function(obj){onfire.fire("onmessage",obj);},send:function(msg){this._sock.send(msg);console.log("send msg"+msg);},};module.exports=NetControl;onfire.js
/*** Created by Administrator on 2018/4/17 0017.*/ /**Copyright (c) 2016 hustcc http://www.atool.org/License: MIThttps://github.com/hustcc/onfire.js**/ /* jshint expr: true */ !function (root, factory) {if (typeof module === 'object' && module.exports)module.exports = factory();elseroot.onfire = factory(); }(typeof window !== 'undefined' ? window : this, function () {var __onfireEvents = {},__cnt = 0, // evnet counterstring_str = 'string',function_str = 'function',hasOwnKey = Function.call.bind(Object.hasOwnProperty),slice = Function.call.bind(Array.prototype.slice);function _bind(eventName, callback, is_one, context) {if (typeof eventName !== string_str || typeof callback !== function_str) {throw new Error('args: '+string_str+', '+function_str+'');}if (! hasOwnKey(__onfireEvents, eventName)) {__onfireEvents[eventName] = {};}__onfireEvents[eventName][++__cnt] = [callback, is_one, context];return [eventName, __cnt];}function _each(obj, callback) {for (var key in obj) {if (hasOwnKey(obj, key)) callback(key, obj[key]);}}/*** onfire.on( event, func, context ) -> Object* - event (String): The event name to subscribe / bind to* - func (Function): The function to call when a new event is published / triggered* Bind / subscribe the event name, and the callback function when event is triggered, will return an event Object**/function on(eventName, callback, context) {return _bind(eventName, callback, 0, context);}/*** onfire.one( event, func, context ) -> Object* - event (String): The event name to subscribe / bind to* - func (Function): The function to call when a new event is published / triggered* Bind / subscribe the event name, and the callback function when event is triggered only once(can be triggered for one time), will return an event Object**/function one(eventName, callback, context) {return _bind(eventName, callback, 1, context);}function _fire_func(eventName, args) {if (hasOwnKey(__onfireEvents, eventName)) {_each(__onfireEvents[eventName], function(key, item) {item[0].apply(item[2], args); // do the functionif (item[1]) delete __onfireEvents[eventName][key]; // when is one, delete it after triggle });}}/*** onfire.fire( event[, data1 [,data2] ... ] )* - event (String): The event name to publish* - data...: The data to pass to subscribers / callbacks* Async Publishes / fires the the event, passing the data to it's subscribers / callbacks**/function fire(eventName) {// fire eventsvar args = slice(arguments, 1);setTimeout(function () {_fire_func(eventName, args);});}/*** onfire.fireSync( event[, data1 [,data2] ... ] )* - event (String): The event name to publish* - data...: The data to pass to subscribers / callbacks* Sync Publishes / fires the the event, passing the data to it's subscribers / callbacks**/function fireSync(eventName) {_fire_func(eventName, slice(arguments, 1));}/*** onfire.un( event ) -> Boolean* - event (String / Object): The message to publish* When passed a event Object, removes a specific subscription.* When passed event name String, removes all subscriptions for that event name(hierarchy)** Unsubscribe / unbind an event or event object.** Examples** // Example 1 - unsubscribing with a event object* var event_object = onfire.on('my_event', myFunc);* onfire.un(event_object);** // Example 2 - unsubscribing with a event name string* onfire.un('my_event');**/function un(event) {var eventName, key, r = false, type = typeof event;if (type === string_str) {// cancel the event name if existif (hasOwnKey(__onfireEvents, event)) {delete __onfireEvents[event];return true;}return false;}else if (type === 'object') {eventName = event[0];key = event[1];if (hasOwnKey(__onfireEvents, eventName) && hasOwnKey(__onfireEvents[eventName], key)) {delete __onfireEvents[eventName][key];return true;}// can not find this event, return falsereturn false;}else if (type === function_str) {_each(__onfireEvents, function(key_1, item_1) {_each(item_1, function(key_2, item_2) {if (item_2[0] === event) {delete __onfireEvents[key_1][key_2];r = true;}});});return r;}return true;}/*** onfire.clear()* Clears all subscriptions**/function clear() {__onfireEvents = {};}return {on: on,one: one,un: un,fire: fire,fireSync: fireSync,clear: clear}; });webSocket.js?
// Learn cc.Class: // - [Chinese] http://docs.cocos.com/creator/manual/zh/scripting/class.html // - [English] http://www.cocos2d-x.org/docs/creator/en/scripting/class.html // Learn Attribute: // - [Chinese] http://docs.cocos.com/creator/manual/zh/scripting/reference/attributes.html // - [English] http://www.cocos2d-x.org/docs/creator/en/scripting/reference/attributes.html // Learn life-cycle callbacks: // - [Chinese] http://docs.cocos.com/creator/manual/zh/scripting/life-cycle-callbacks.html // - [English] http://www.cocos2d-x.org/docs/creator/en/scripting/life-cycle-callbacks.html cc.Class({extends: cc.Component,properties: {// foo: {// // ATTRIBUTES:// default: null, // The default value will be used only when the component attaching// // to a node for the first time// type: cc.SpriteFrame, // optional, default is typeof default// serializable: true, // optional, default is true// },// bar: {// get () {// return this._bar;// },// set (value) {// this._bar = value;// }// }, },// LIFE-CYCLE CALLBACKS: onLoad () {},onMessage:function(obj){console.log("It's HelloWorld onMessage----->"+obj);},onDestroy:function(){onfire.un(this.msssageFire);},button_click:function()//按鈕事件 {var netControl=require('NetControl');console.log("開始連接");netControl.connect();console.log("連接完成");this.msssageFire=onfire.on("onmessage",this.onMessage.bind(this));var jsonTmp = "{ \"Mobile\": \"" + 121212 + "\", \"Password\": \"" + 121313454545 + "\" }";netControl.send("1010" + jsonTmp);console.log("sendToWS");},start () {},// update (dt) {}, });?
nodejs服務器
參考網站
npm install websocket
在www文件中添加
var SocketServer = require('../game/socket-server'); SocketServer(server);新建game文件夾socket-server.js
/*** Created by chu on 2017/8/16 0016.*/const SocketServer = function (server) {var WebSocket=require('ws');var io=new WebSocket.Server({server})io.on('connection',function(ws){console.log(`[SERVER] connection()`);ws.on('message', function (message) {console.log("接受消息");console.log(`[SERVER] Received: ${message}`);ws.send(`ECHO: ${message}`, (err) => {if (err) {console.log(`[SERVER] error: ${err}`);}});})})return io; }; module.exports = SocketServer;?
轉載于:https://www.cnblogs.com/zuhaoran/p/8862495.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的在cocos creator 中使用websocket的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python3NumPy——数组(2)之
- 下一篇: 关于在Intellij IDEA工具中配