这就是我的处境。我有一个聊天室网站。人们一起公开聊天,每个人都看到谁在写什么。所有的聊天都存储在数据库(mysql)中。
现在我想在Android上实现这个聊天功能。因此,当用户从手机发送短信时,应该发送到聊天室网站,反之亦然,这意味着Android用户应该看到从聊天网页发送的所有文本。
因此:
1: Android用户应该看到人们通过网页发送的所有文本,2: Android用户应该能够将文本发送到这个聊天室网页(因此其他使用该网页聊天的用户应该看到他的文本)。
最大的问题是,实现这一目标的最佳途径是什么?
这个过程会像XMPP那样实时发生吗?
GCM是唯一的方法(尽管它不是实时的)?
如果我使用web服务将消息发送到web,如何设置传入消息的侦听器?
我不知道我是否清楚。任何帮助都是非常感谢的。把绳子的头给我,我会走到最后.
编辑:服务器端的问题:当MYSQL中的特定表被更改时(例如,当添加了新行时),是否会让服务器做一些事情?
发布于 2014-04-10 21:51:51
我意识到的第一件事是,这非常适合Pub/Sub范式。客户端向特定频道(机房)发布聊天消息,并订阅通道;服务器订阅通道并将数据存储在MySQL数据库中。
您可以尝试使用像PubNub这样的外部实时网络。PubNub对最多100万条消息是免费的(请参阅定价页面)。它们有一个Android SDK和PHP 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());
}(这里是完整的例子。)那么,当您想发布消息时:
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)
}
));我希望这对你的项目有帮助。告诉我事情进展如何。
发布于 2014-04-10 18:33:41
简短回答
下面是指向科迪图茨和示例的链接
长答案
为了实时与android进行实时聊天,使用db (如mysql ),您有多种方法。第一个到我这里来的是做一些api,但不是最好的方法,因为您将不得不对您的服务器执行许多请求。所以我建议你使用像nodeJs和socketIO这样的技术(只要谷歌them...you就可以找到大量的例子),看看我为你找到的链接。祝您今天愉快。安东尼奥
发布于 2014-04-10 18:46:16
你需要网络上的websockets来实时地做到这一点,而在android系统中,你需要发送推送通知。
也许你想检查一下“Android的Google消息传递”。
https://stackoverflow.com/questions/22995585
复制相似问题