这是我的情况。我有一个聊天室网站。人们在一起公开聊天,每个人都看到谁在写什么。所有聊天都存储在数据库(mysql)
中现在我想在Android上实现这个聊天。因此,当用户从他的手机发送文本时,它应该被发送到聊天室网站,反之亦然,这意味着Android用户应该看到从聊天网页发送的所有文本。
结果:
1:Android用户应该看到人们通过网页发送的所有文本, 2:Android用户应该能够向此聊天室网页发送文本(因此正在使用该网页聊天的其他用户应该看到他的文本)。
最大的问题是,实现这一目标的最佳方法是什么?
这个过程可以像XMPP一样实时发生吗?
GCM是唯一的方式(尽管不是实时)吗?
如果我使用Web服务将消息发送到Web,我该如何设置传入消息的监听器?
我不知道我是否清楚。任何帮助表示赞赏。只要给出字符串的头部,我就会走到尽头......
编辑:服务器端问题:当MYSQL中的特定表发生更改时(例如添加新行时),是否有服务器执行某些操作?
答案 0 :(得分:3)
我想到的第一件事就是它非常适合 Pub / Sub范例。客户端将聊天消息发布到特定频道(会议室),并订阅频道;服务器订阅一个频道并将数据存储在MySQL数据库中。
您可以尝试使用 PubNub 等外部实时网络。 PubNub最多可免费提供1百条消息(请参阅pricing page。)他们有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());
}
(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)
为了实时聊天与使用db像mysql的android兼容你有各种方法。第一个来找我的人是做一些api但不是最好的方法,因为你必须向你的服务器做很多请求。所以我建议你使用像nodeJs和socketIO这样的技术(只需google它们......你会发现很多例子),看看我找到的链接。祝你今天愉快。安东尼奥
答案 2 :(得分:1)
您需要网络上的websockets实时执行此操作,在Android中您需要发送推送通知。
也许您想检查" Google Cloud Messaging for Android"。