SenchaTouch2.0 + socket.io:在SenchTouch2.0如何使用socke

2019-07-30 06:50发布

其实,我有尝试,但失败了。 现在的代码是:

function include(path){ 
var a=document.createElement("script");
a.type = "text/javascript"; 
a.src=path; 
var head=document.getElementsByTagName("head")[0];
head.appendChild(a);
} 
include("app/controller/node_modules/socket.io-client/dist/socket.io.js");

Ext.define('WGTalk.controller.guest', {
extend: 'Ext.app.Controller',

config:{
    refs:{
        viewMsg:'#viewMsg',
        txtMsg:'#txtMsg'
    },
    control:{
        '#btSend':{
            tap:'doSend'
        }
    }
},

launch:function(){
        var socket = io.connect('http://localhost:8080');

        socket.on('connect',function(){
            console.log("connected server");
        });

        socket.on('disconnect',function(){
            console.log("server closed");
        });

        socket.on('message',function(data) { 
            console.log('Received a message from the server: ',data); 
        });
},

doSend:function(){
    var msg = this.getTxtMsg().getValue();
    var msgStore = this.getViewMsg().getStore();
    msgStore.add({name:msg,age:'180'});
    this.getTxtMsg().setValue("");
}
});

和错误是:*的ReferenceError:找不到变量:io的@ “变种插座= io.connect(的'http://本地主机:8080');” *

我怎样才能解决这个问题?

Answer 1:

在你app.json,加载外部JavaScript资源,如socket.io,修改如下:

/**
 * List of all JavaScript assets in the right execution order.
 * Each item is an object with the following format:
 * ...
 */
"js": [
    {
        "path": "socket.io.js",
        "x-bootstrap": true
    },
    {
        "path": "json.js",
        "x-bootstrap": true
    },
    ... 
 ]

如果您的移动应用程序是一个客户端,上面的.js是客户端socket.io。



Answer 2:

声明中这样的index.html IO插座

<script src="http://yourip:port/socket.io/socket.io.js"></script>


文章来源: SenchaTouch2.0 + socket.io : how to use socket.io.js in SenchTouch2.0