Faits: Faits: A. A.a B._ est analyste programmeur de profession. Par contrat du 17 février 1997, il a été engagé en qualité d'employé non permanent par l'Office fédéral des réfugiés, avec lieu de service à X._. Temporaires, les rapports de service ont commencé le 1er mars 1997 et duré jusqu'au 30 septembre 1997. Le contrat a été prolongé jusqu'au 31 décembre 1997 (complément du 23 septembre 1997), ensuite jusqu'au 31 mars 1998 (complément du 17 novembre 1997), jusqu'au 30 juin 1998 (complément du 24 mars 1998) et jusqu'au 30 novembre 1998 (complément du 4 juin 1998). A partir du 1er décembre 1998, B._ s'est inscrit à l'assurance-chômage. Par décision du 3 février 1999, la Caisse publique de chômage du canton de Fribourg l'a avisé que la perte de travail du 1er décembre 1998 au 28 février 1999 ne pouvait pas être prise en considération et qu'il n'avait pas droit à l'indemnité de chômage durant cette période. Constatant qu'il y avait eu prolongations successives du contrat de travail, elle se fondait sur la présomption que l'on se trouvait en présence de contrats en chaîne devant être considérés comme un seul contrat de durée indéterminée, auquel s'appliquait le délai de résiliation prévu pour la première année de service. A.b Le 8 mars 1999, B._ a recouru contre cette décision devant la Cour des assurances sociales du Tribunal administratif du canton de Fribourg. Il déclarait que son employeur l'avait informé à mi-novembre 1998 que le service informatique de X._ allait être transféré à Berne, en lui proposant de l'engager au nouveau lieu de service ou de mettre un terme définitif aux relations contractuelles. Etant domicilié à Y._, il avait refusé d'être transféré à Berne, puisque cela aurait impliqué un déplacement quotidien d'environ 160 à 180 km et qu'il aurait été partiellement affecté au service Hot-Line comme piquet répondant aux utilisateurs, avec un horaire qui aurait débuté le matin à 7 h. ou se serait terminé le soir à 18 h., deux à trois fois par semaine. Or, en raison de la distance à parcourir, il lui aurait été difficile de tenir cet horaire. Dans sa réponse du 15 avril 1999, la caisse a conclu au rejet du recours. Elle prenait note que B._ avait refusé son transfert à Berne et réservait la possibilité d'une suspension de son droit aux indemnités de chômage pour faute grave. Le 22 avril 1999, la Caisse publique de chômage du canton de Fribourg a rendu une décision « provisoire », par laquelle elle a prononcé la suspension du droit de B._ aux indemnités de chômage durant 45 jours à partir du 1er décembre 1998, au motif qu'il était sans travail par sa propre faute. Le 21 mai 1999, B._ s'est déterminé sur la réponse de la caisse du 15 avril 1999. En ce qui concerne son refus d'être transféré à Berne, il contestait la décision du 22 avril 1999. Niant toute faute grave de sa part, il était d'avis que la suspension de son droit à l'indemnité ne devait en aucun cas dépasser 15 jours. Par jugement du 31 août 2000, la juridiction cantonale a admis, dans la mesure où il était recevable, le recours contre la décision du 3 février 1999 et annulé celle-ci. Considérant la lettre de B._ du 21 mai 1999 comme un recours contre la décision du 22 avril 1999, elle a, par jugement du 2 novembre 2000, rejeté le recours. A.c Sur recours de B._ contre le jugement du 2 novembre 2000, le Tribunal fédéral des assurances, par arrêt du 7 novembre 2001, a annulé celui-ci, la cause étant renvoyée à la Cour des assurances sociales du Tribunal administratif du canton de Fribourg pour nouveau jugement. Considérant que le greffier-rapporteur aurait dû se récuser, il invitait la juridiction cantonale à statuer à nouveau, dans une composition régulière, sur le recours interjeté par B._ contre la décision de la caisse du 22 avril 1999. A.c Sur recours de B._ contre le jugement du 2 novembre 2000, le Tribunal fédéral des assurances, par arrêt du 7 novembre 2001, a annulé celui-ci, la cause étant renvoyée à la Cour des assurances sociales du Tribunal administratif du canton de Fribourg pour nouveau jugement. Considérant que le greffier-rapporteur aurait dû se récuser, il invitait la juridiction cantonale à statuer à nouveau, dans une composition régulière, sur le recours interjeté par B._ contre la décision de la caisse du 22 avril 1999. B. Suite à l'arrêt du Tribunal fédéral des assurances du 7 novembre 2001, la Cour des assurances sociales du Tribunal administratif du canton de Fribourg a siégé dans une composition entièrement différente de celle qui avait rendu le jugement du 2 novembre 2000. Par jugement du 18 décembre 2003, la juridiction cantonale a partiellement admis le recours, la suspension du droit de B._ aux indemnités de chômage étant réduite de 45 à 31 jours. Par jugement du 18 décembre 2003, la juridiction cantonale a partiellement admis le recours, la suspension du droit de B._ aux indemnités de chômage étant réduite de 45 à 31 jours. C. B._ interjette recours de droit administratif contre ce jugement, en concluant, sous suite de frais et dépens, à l'annulation de celui-ci. A titre principal, il invite le Tribunal fédéral des assurances à dire qu'il doit être mis au bénéfice d'indemnités de chômage du 1er décembre 1998 au 9 février 1999, à titre subsidiaire à prononcer la suspension de son droit aux indemnités de chômage pour une durée maximale de 15 jours. La Caisse publique de chômage du canton de Fribourg conclut au rejet du recours. Le Secrétariat d'Etat à l'économie n'a pas déposé d'observations.