我有这个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
所以没有数据被传输,当然也没有服务器回答所以问题可能是什么
答案 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服务器没有连接到命名空间