【发布时间】:2018-02-27 06:54:30
【问题描述】:
我有这个在 windows 10 上本地运行的 api 在 windows 站侦听具有命名空间 "vendores" 的套接字我可以连接窗体 ios 应用程序
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 套接字的响应,实际上在 db 中有一些数据与位置数据一起发送到服务。 但是当使用在云上运行的服务运行应用程序时,套接字永远不会连接这个 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:写入 民意调查:有数据:假 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] LOG 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] 日志 SocketEnginePolling:发布 2017-09-18 12:07:06.114 vasoking[1036:25817] LOG SocketEnginePolling: POSTing 2017-09-18 12:07:06.117 vasoking[1036:25994] LOG SocketEnginePolling: Doing 投票 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
所以没有数据被传输,当然也没有来自服务器的回答,所以可能是什么问题
【问题讨论】:
标签: ios node.js swift websocket socket.io