LuaSocket - TCP第二条消息不发送

时间:2013-02-09 02:31:42

标签: lua corona

我一直在谷歌搜索一段时间,似乎没有解决我在这里解决这个问题的提议。

我使用LuaSocket作为连接到我创建的外部服务器的简单方法,并且我能够成功连接到它并发送信号。

但是,当我稍后尝试发送第二条消息时,外部服务器似乎没有收到消息,即使我仍然连接到套接字。

socket = require("socket")
host, port = ip, port
tcp = assert(socket.tcp())
tcp:settimeout( 0 )

tcp:connect(host, port);

msg = {
    ["status"]="connect",
    ["usrName"]=username
}
msg = Json.Encode(msg)

tcp:send(msg); -- This message, the server received this message.


-- Later in my code, I attempt to send another message.

msg = {
    ["status"]="anotherMessage",
    ["usrName"]=username
};
msg = Json.Encode(msg) 
tcp:send(msg); -- This message is not sending, even though i'm still connected.

2 个答案:

答案 0 :(得分:1)

您需要显示另一方发生的事情,因为即使连接可能已打开,它也可能根本无法读取。你也没有说“消息没有发送”时到底发生了什么;你有错误吗?脚本完成但邮件没有发送?

您可以尝试以下几种方法:

  • 切换到(默认)同步发送,直到它开始工作;删除tcp:settimeout(0),因为如果另一方尚未准备好阅读该消息,您的发送可能会因“超时”消息而失败。
  • 检查来自:send来电的错误消息,看看它是否超时。

    local ok, err = tcp:send(msg)

  • 使用socket.select检查对方是否已准备好接受您要发送的邮件。

答案 1 :(得分:0)

尝试在序列化JSON的末尾添加"\r\n"