【问题标题】:using Socket.io with iOS via the socket.io Swift client通过 socket.io Swift 客户端在 iOS 中使用 Socket.io
【发布时间】:2015-08-21 15:47:20
【问题描述】:

我一直在尝试在应用程序和我的服务器之间进行基本的通信,但无论我做什么,我似乎都无法让它工作。 下面是我的js代码

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);

io.on('connection', function(socket){
    console.log('a user connected');
    io.emit("hello");
    socket.on('disconnect', function() {
        console.log('a user disconnected');
    });
    socket.on('response', function(message){
        console.log(message);
    });
});


http.listen(3000, function(){
    console.log('listening on *:3000');
});

理论上应该在用户连接时发出警报,输出一条消息说用户已连接,然后发出一个事件“hello”

在断开连接部分下方,我正在尝试从我的 iOS 应用程序与服务器通信。我发出一个名为“response”的事件,并带有一个名为“I got your response”的字符串。

我在控制台中收到“用户已连接”消息,但我从 iOS 应用程序发送的消息从未在控制台中打印。

这是我应用中的代码。

   override func viewDidLoad() {
       super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
       let socket = SocketIOClient(socketURL: "192.168.0.3:3000")
       socket.on("hello") {data, ack in
           socket.emit("response", "I got your response")
       }
       socket.connect()
   }

如您所见,我的服务器端代码发出事件“hello”。这应该会触发 socket.on("hello") 并让应用程序发出事件“response”,这会使服务器打印出与它一起发送的字符串。

除了用户连接时在控制台中打印的消息之外,这些都不会发生。

非常感谢您的帮助。

该框架的 Github 存储库如下 https://github.com/socketio/socket.io-client-swift

【问题讨论】:

  • 检查服务器和客户端的日志。对于客户端,请考虑选项 log:true(检查 github 存储库中的 socket.io-client.swift),对于服务器端,将 node.js 应用程序运行为 DEBUG=* node yourfile.js 所以你可以知道哪一边是有问题的。您还可以使用数据包捕获工具(例如,wireshark)查看发送和接收的数据包以进行进一步分析。
  • 您是否尝试过将您的套接字设为实例变量。它的作用域是你现在运行的函数。有几个人遇到了这个问题
  • @GregPrice 是对的,如果您启用日志记录,您会看到套接字仅存在于该函数的得分中,并在之后被释放。

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


【解决方案1】:

在类的顶部声明并启动您的套接字变量。正如之前的 cmets 所说,我认为该变量会在范围内丢失。

class HostSocketHandler {
    let socket = SocketIOClient(socketURL: urlString)
    init(){
        socket.connect();
    }
}

【讨论】:

    猜你喜欢
    • 2014-08-19
    • 2016-03-09
    • 2014-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多