在网页和android之间实现聊天

时间:2014-04-10 17:58:49

标签: php android chat

这是我的情况。我有一个聊天室网站。人们在一起公开聊天,每个人都看到谁在写什么。所有聊天都存储在数据库(mysql)

现在我想在Android上实现这个聊天。因此,当用户从他的手机发送文本时,它应该被发送到聊天室网站,反之亦然,这意味着Android用户应该看到从聊天网页发送的所有文本。

结果:

1:Android用户应该看到人们通过网页发送的所有文本, 2:Android用户应该能够向此聊天室网页发送文本(因此正在使用该网页聊天的其他用户应该看到他的文本)。

最大的问题是,实现这一目标的最佳方法是什么?

这个过程可以像XMPP一样实时发生吗?

GCM是唯一的方式(尽管不是实时)吗?

如果我使用Web服务将消息发送到Web,我该如何设置传入消息的监听器?

我不知道我是否清楚。任何帮助表示赞赏。只要给出字符串的头部,我就会走到尽头......

编辑:服务器端问题:当MYSQL中的特定表发生更改时(例如添加新行时),是否有服务器执行某些操作?

3 个答案:

答案 0 :(得分:3)

我想到的第一件事就是它非常适合 Pub / Sub范例。客户端将聊天消息发布到特定频道(会议室),并订阅频道;服务器订阅一个频道并将数据存储在MySQL数据库中。

您可以尝试使用 PubNub 等外部实时网络。 PubNub最多可免费提供1百条消息(请参阅pricing page。)他们有Android SDKPHP SDK(我假设您在服务器上使用PHP时因使用了PHP标签。)

在您的情况下,在您的Android客户端中,您订阅了一个频道:

Pubnub pubnub = new Pubnub("demo", "demo");

try {
    pubnub.subscribe("my_channel", new Callback() {
        //See full example for all Callback methods
        @Override
        public void successCallback(String channel, Object message) {
            System.out.println("SUBSCRIBE : " + channel + " : "
                  + message.getClass() + " : " + message.toString());
        }
    }
} catch (PubnubException e) {
    System.out.println(e.toString());
}

Full example here.)然后,当您要发布消息时:

Callback callback = new Callback() {
    public void successCallback(String channel, Object response) {
        Log.d("PUBNUB",response.toString());
    }
    public void errorCallback(String channel, PubnubError error) {
        Log.d("PUBNUB",error.toString());
    }
};
pubnub.publish("my_channel", "This is an important chat message!" , callback); 

纯!但是你的服务器怎么样,它是如何收到这些消息的呢?

$pubnub = new Pubnub(
    "demo",  ## PUBLISH_KEY
    "demo",  ## SUBSCRIBE_KEY
    "",      ## SECRET_KEY
    false    ## SSL_ON?
);

$pubnub->subscribe(array(
    'channel'  => 'my_channel',         ## REQUIRED Channel to Listen
    'callback' => function($message) {  ## REQUIRED Callback With Response
        ## Time to log this to MySQL!
        return true;         ## Keep listening (return false to stop)
    }
));

我希望这对您的项目有所帮助。让我知道它是怎么回事。

答案 1 :(得分:1)

简短回答

此处与CODETUTS的链接 和SAMPLE

LONG ANSWER

为了实时聊天与使用db像mysql的android兼容你有各种方法。第一个来找我的人是做一些api但不是最好的方法,因为你必须向你的服务器做很多请求。所以我建议你使用像nodeJs和socketIO这样的技术(只需google它们......你会发现很多例子),看看我找到的链接。祝你今天愉快。安东尼奥

答案 2 :(得分:1)

您需要网络上的websockets实时执行此操作,在Android中您需要发送推送通知。

也许您想检查" Google Cloud Messaging for Android"。