socketio客户端没有在ubunto服务器上连接ios的sockeio客户端

时间:2017-09-18 16:40:35

标签: ios node.js swift websocket socket.io

我有这个api本地运行在Windows 10上监听一个带有名称空间“vendedores”的套接字在windows站我可以连接形式ios app

let appDelegate = UIApplication.shared.delegate as! AppDelegate
        let myJSON = [
            "lng":String(location.coordinate.longitude),
            "lat":String(location.coordinate.latitude),
            "idvendedor":appDelegate.idSeller
        ]
        print("updating location")

        let socket = SocketIOClient(socketURL: URL(string: self.constans.addres)!,config: [.connectParams(["accessToken" : appDelegate.token]),.forcePolling(true),.nsp("/vendedor"), .log(true)])
        print("el url del token: \(self.constans.addres)/vendedor")

        socket.on("connect") {data, ack in
            print("socket connected")
            socket.emit("setLocation",myJSON)
            print("Mostrando el Json: \(myJSON)")
        }
        socket.on("locationChanged", callback: {_,_ in
            print("disconnected")
            socket.disconnect()
        })
        print("send to connect ")
        socket.connect()
在节点上运行的服务器端的

具有此代码

vendedorSocket.on('connection', function (socket) {
        console.log('Un vendedor se ha conectado');
        socket.on('setLocation', function(data){
            try{
                    assert(data.lng, "No longitude provided.");
                    assert(data.lat, "No latitude provided");
                    assert(data.idvendedor, "No idvendedor provided");
                    console.log('Ha cambiado la ubicación de un vendedor');
                    app.models.mapa.find({where: {vendedorId: data.idvendedor, activa: true }}, function(err, ubicaciones_inst) {
                        if (err) throw(err);
                        if(ubicaciones_inst && ubicaciones_inst.length > 0){
                            ubicaciones_inst.forEach(function (ubicacion) {
                                ubicacion.activa = false;
                                ubicacion.save();
                            });
                        }
                    });
                    var geopoint = {lat: data.lat, lng: data.lng};
                    app.models.mapa.create({coordenadas: geopoint, activa: true, vendedorId: data.idvendedor, created: Date.now()}, function(err, ubicacion_inst){
                        if(err) throw(err);
                        else if(ubicacion_inst){
                            socket.emit('locationChanged', ubicacion_inst);
                        }
                    });
            }
            catch(ex){
                throwSocketException(socket, ex.message);
            }
        });
    });
在连接到本地api之后,我已经从连接的api socket和db中的deed得到响应,有一些数据通过位置数据发送到服务。 但是当运行在云上运行的服务的应用程序时,套接字永远不会连接到xcode中显示的日志

  

2017-09-18 12:07:03.802 vasoking [1036:26086] LOG SocketEnginePolling:   得到民意调查消息:1:3 2017-09-18 12:07:03.808 vasoking [1036:26086] LOG   SocketEngine:得到消息:3 2017-09-18 12:07:03.812   vasoking [1036:26086] LOG SocketEnginePolling:进行轮询GET   http://192.241.223.xxx:8003/socket.io/?transport=polling&b64=1&accessToken=ISWp70VbUX7YfHLHzs3ayYySADhWeMnT1k94Vuwsn1g2zr069lvyBV7JTOVEyEYj&sid=rGP6Zohesfhk0yE9AAAT   2017-09-18 12:07:06.100 vasoking [1036:25994] LOG SocketEngine:写作   民意调查:有数据:false 2017-09-18 12:07:06.100 vasoking [1036:25817]   LOG SocketEngine:编写民意调查:有数据:false 2017-09-18   12:07:06.106 vasoking [1036:25994] LOG SocketEnginePolling:正在发送   民意调查:作为类型:2 2017-09-18 12:07:06.107 vasoking [1036:25817]日志   SocketEnginePolling:发送民意调查:类型:2 2017-09-18 12:07:06.108   vasoking [1036:25994] LOG SocketEnginePolling:创建的POST字符串:1:2   2017-09-18 12:07:06.110 vasoking [1036:25817] LOG SocketEnginePolling:   创建POST字符串:1:2 2017-09-18 12:07:06.113 vasoking [1036:25994]   LOG SocketEnginePolling:发布2017-09-18 12:07:06.114   vasoking [1036:25817] LOG SocketEnginePolling:发布2017-09-18   12:07:06.117 vasoking [1036:25994] LOG SocketEnginePolling:做   轮询POST   http://192.241.223.xxx:8003/socket.io/?transport=polling&b64=1&accessToken=ISWp70VbUX7YfHLHzs3ayYySADhWeMnT1k94Vuwsn1g2zr069lvyBV7JTOVEyEYj&sid=eBFLEj9Lyq5gFsOTAAAX   2017-09-18 12:07:06.119 vasoking [1036:25817] LOG SocketEnginePolling:   进行轮询POST   http://192.241.223.xxx:8003/socket.io/?transport=polling&b64=1&accessToken=ISWp70VbUX7YfHLHzs3ayYySADhWeMnT1k94Vuwsn1g2zr069lvyBV7JTOVEyEYj&sid=tqm-6Kb6cYkK5XxlAAAY

所以没有数据被传输,当然也没有服务器回答所以问题可能是什么

1 个答案:

答案 0 :(得分:0)

点击此链接https://github.com/socketio/socket.io-client-swift/issues/744 在SocketIOClient.swift中,当我把这段代码放在

中时
open func engineDidOpen(reason: String):
if reason == "Connect" {
joinNamespace(nsp)
}
瞧,这个工作完美,我猜这是windows和linux服务器运行节点之间的一个问题,因为没有这个在Windows上连接和它也,但没有这个的Linux服务器没有连接到命名空间