首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实现网页与android之间的聊天

实现网页与android之间的聊天
EN

Stack Overflow用户
提问于 2014-04-10 17:58:48
回答 3查看 1.7K关注 0票数 3

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

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

因此:

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

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

这个过程会像XMPP那样实时发生吗?

GCM是唯一的方法(尽管它不是实时的)?

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

我不知道我是否清楚。任何帮助都是非常感谢的。把绳子的头给我,我会走到最后.

编辑:服务器端的问题:当MYSQL中的特定表被更改时(例如,当添加了新行时),是否会让服务器做一些事情?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-04-10 21:51:51

我意识到的第一件事是,这非常适合Pub/Sub范式。客户端向特定频道(机房)发布聊天消息,并订阅通道;服务器订阅通道并将数据存储在MySQL数据库中。

您可以尝试使用像PubNub这样的外部实时网络。PubNub对最多100万条消息是免费的(请参阅定价页面)。它们有一个Android SDKPHP SDK (我假设您在服务器上使用PHP,因为您使用了PHP标记)。

在你的例子中,在你的Android客户端,你会订阅一个频道:

代码语言:javascript
复制
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());
}

(这里是完整的例子。)那么,当您想发布消息时:

代码语言:javascript
复制
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); 

整洁!但是您的服务器呢,它是如何接收这些消息的呢?

代码语言:javascript
复制
$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)
    }
));

我希望这对你的项目有帮助。告诉我事情进展如何。

票数 3
EN

Stack Overflow用户

发布于 2014-04-10 18:33:41

简短回答

下面是指向科迪图茨示例的链接

长答案

为了实时与android进行实时聊天,使用db (如mysql ),您有多种方法。第一个到我这里来的是做一些api,但不是最好的方法,因为您将不得不对您的服务器执行许多请求。所以我建议你使用像nodeJs和socketIO这样的技术(只要谷歌them...you就可以找到大量的例子),看看我为你找到的链接。祝您今天愉快。安东尼奥

票数 1
EN

Stack Overflow用户

发布于 2014-04-10 18:46:16

你需要网络上的websockets来实时地做到这一点,而在android系统中,你需要发送推送通知。

也许你想检查一下“Android的Google消息传递”。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22995585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档