php – 在网页和android之间实现聊天

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

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

结果是:

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

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

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

GCM是唯一的方式(虽然它不是实时的)?

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

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

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

解决方法:

我想到的第一件事就是它非常适合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)
    }
));

我希望这有助于你的项目.让我知道事情的后续.

上一篇:javascript – 在Firebase中管理聊天频道的最佳方式


下一篇:2021-03-30