注意:显示临时标题

  发布于 2023-01-29 14:48

我不能调试这个消息,就像一个星期前一样.

我尝试恢复到旧文件,但这很奇怪,没有解决我的问题.

所以:我有两个长轮询请求.(关闭其中一个没有帮助).

例如,这是其中之一:

public function update_private_messages_ajax_handler(){
    global $wpdb;
    global $bp;
    $chat_table = $wpdb->prefix . 'bp_dollars_chat';

    $current_user = $bp->loggedin_user->id;

    ob_start();
    header("Content-Type: application/json");
    header("Cache-Control: no-cache, must-revalidate");
    header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");

    $startTime = time();
    while((time()-$startTime)<=20) {
        $messages = $wpdb->get_results(
            $wpdb->prepare("(SELECT * 
                FROM $chat_table 
                WHERE to_user = %d
                AND recd = 1
                AND id > %d
                ORDER BY id DESC) ORDER BY id ASC
            ", $current_user, $_POST['last_id'])
        );
        if($messages) {
            foreach($messages as $v){
                //$v->timestring = date_i18n($this->date_format.' - '.$this->time_format, $v->unix_timestamp+$this->gmt_offset);
                $v->name = get_dollar_name($v->from_user);
                $v->avatar = get_avatar($v->from_user, 50);
                //$v->message = convert_smilies( $v->message );
            }
            $response = json_encode(array('no_participation' => $this->no_participation, 'success'=> 1, 'messages'=>$messages));

            echo $response;
            ob_flush(); flush();
            exit;
        } else {
            sleep($this->options['timeout_refresh_messages']);
        }
    }

    $response = json_encode(array('no_participation' => $this->no_participation, 'success'=> 0));

    echo $response;
    ob_flush(); flush();
    exit;
}

正如您所看到的,我发送了缓存控制标头,所以这不应该是这里描述的问题 我也没有安装任何adBlocker,这是本地安装.

有一个客户端脚本

update_private_messages: function() {
    jQuery.post(quick_chat.ajaxurl, {
            action: 'quick-chat-ajax-update-pmessages',
            last_id: quick_chat.last_private_id
        },
        function(data) {
            console.log(data);
            if(data.success == 1) {
                var updates = data.messages;
                var already_notified = 0;
                var chat_history = jQuery('.popoverx.chat.in .chathistory');
                for(var i=0;typeof(updates[i])!='undefined';i++){
                    // this in case if window open and new message is for current user
                    if(quick_chat.privateOpen == true && (quick_chat.privateOhter == updates[i].from_user || quick_chat.privateOhter == updates[i].to_user )) {
                        // @TODO do I animate every time?
                        jQuery(chat_history).prepend(quick_chat.single_private_html(updates[i])).animate({scrollTop: 0}, 500);
                    } else if(updates[i].recd == 1 && updates[i].from_user != quick_chat.user_id) {
                        // not yet in unread group
                        if(quick_chat.privateUnread.indexOf(parseInt(updates[i].from_user)) == -1) {
                            quick_chat.privateUnread.push(parseInt(updates[i].from_user));
                        }
                        if(already_notified == 0 && quick_chat.last_private_id != 0 && updates[i].from_user != quick_chat.user_id) {
                            if(quick_chat.play_audio == 1) {
                                quick_chat.audio_element.play();
                            }
                            already_notified = 1;
                        }
                    }
                }
                // update label
                var unreadIcon = jQuery('#bs-navbar-right > li > a.messages');
                if(quick_chat.privateUnread.length != 0) {
                    unreadIcon.find('span').remove().end().append(''+ quick_chat.privateUnread.length +'')
                } else {
                    unreadIcon.find('span').remove()
                }
                quick_chat.last_private_id = updates[updates.length-1].id;
            }
            quick_chat.update_private_messages();
        }, 'json'
    );
}

这是正常的吗?我不能成为长时间轮询的正常消息 - 因为它是一个待处理的请求.它似乎没有在任何地方记录


注意:我也有很多短轮询请求,这可能是超过6个请求相互取消的情况但是 - 我还尝试关闭所有其他请求,除了一个(长轮询),这不是一个案例


这是一个原始脚本,所以你可以看到这条消息:http: //www.techytalk.info/wordpress/quick-chat/


只是为了总结这个问题:这是正常的吗?(我没有在使用彗星的其他网站上看到这个问题) - 如果没有 - 我应该在哪里寻找问题,客户端或服务器端?在这里他们说,在这种情况下请求根本不发送,但那不是真的,我的脚本工作,我不能聊天(这是一个聊天脚本)

2 个回答
  • 如果您忘记在跨域调用中执行CORS标头,也会出现此问题.

     header("Access-Control-Allow-Origin: *");
    

    2023-01-29 14:49 回答
  • 这在chrome中是完全正常的(截至最近).有一个讨论,在这里,他们讨论的变化,本质上挂起它是不正确显示某些头的要求,所以现在他们显示警告,这些都是临时标题.

    从讨论中:

    网络面板:添加对临时请求标头的警告.(是:在开发人员工具中,待处理请求的请求标头不正确)

    我不知道该修复程序何时实际发布,或者您是否一直打开Chrome,因此它暂时没有更新 - 但几乎可以肯定,这不是你做的 - 只是Chrome现在如何工作.

    2023-01-29 14:49 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有