Faits :
A.
Par décision du 2 septembre 2015, l'Office de l'assurance-invalidité du canton de Fribourg a supprimé le droit à la rente entière d'invalidité dont B._ bénéficiait.
B.
Le 13 octobre 2015, B._ a envoyé un pli au Tribunal cantonal du canton de Fribourg, Cour des assurances sociales, dans lequel se trouvait un mémoire de recours contre la décision du 2 septembre 2015, daté du 5 octobre 2015. Ce pli contenait également une enveloppe vide et ouverte qui avait précédemment été envoyée au Tribunal cantonal, Route André-Piller 21, CP, 1762 Givisiez, mais que la Poste suisse avait retournée à son expéditeur le 13 octobre 2015 en apposant un autocollant "Retour. A déménagé. Délai de réexpédition expiré". Sur l'enveloppe vide, figuraient en outre les déclarations de deux témoins attestant de son dépôt dans une boîte aux lettres de la Poste suisse à U._ le 5 octobre 2015 à 22h15, ainsi qu'un cachet postal mentionnant la date du 6 octobre 2015.
Dans ses observations accompagnant son envoi du 13 octobre 2015, B._ a précisé que son recours du 5 octobre 2015 avait été malencontreusement envoyé à l'ancienne adresse du Tribunal cantonal à Givisiez et que la Poste suisse le lui avait retourné. Il a conclu à ce que son recours fût considéré comme étant valablement déposé et demandé, subsidiairement, que sa lettre du 13 octobre 2015 fût interprétée comme une demande de restitution du délai.
Par décision du 28 octobre 2015, la juridiction cantonale a considéré que le recours contre la décision du 2 septembre 2015 avait été formé le 13 octobre 2015. Elle a rejeté la demande de restitution du délai et déclaré le recours irrecevable pour cause de tardiveté.
C.
B._ interjette un recours en matière de droit public contre ce jugement dont il demande l'annulation, en concluant au renvoi de la cause aux premiers juges pour jugement au fond.
Le tribunal cantonal et l'office intimé renoncent à formuler des observations sur le recours. L'Office fédéral des assurances sociales a également renoncé à se déterminer.

Considérant en droit :
1.
La juridiction cantonale a admis que le courrier envoyé le 5 octobre 2015 à une adresse erronée ne pouvait pas être considéré comme étant un recours valablement déposé à l'encontre de la décision administrative du 2 septembre 2015, puisqu'il n'avait été notifié à aucune autorité, même incompétente, qui l'aurait ensuite transmis au tribunal compétent. Le tribunal cantonal a relevé qu'il incombait à tout justiciable d'adresser à temps son recours à l'adresse valable de l'autorité compétente, ajoutant que cette condition était d'autant plus exigible que le recourant était représenté par une mandataire professionnelle, rompue aux règles de procédure et habituée à saisir les tribunaux, notamment le tribunal cantonal fribourgeois. De plus, les voies de droit mentionnant l'adresse du tribunal cantonal figuraient correctement au bas de la décision attaquée, et le mandataire ne devait pas ignorer que le déménagement du tribunal était intervenu en septembre 2013. La juridiction cantonale a aussi considéré qu'on ne saurait reprocher à la Poste d'avoir retourné le pli, conformément à ses conditions générales, dès lors que le délai de réexpédition d'une année consécutif au déménagement était échu depuis de nombreux mois. Elle a ajouté que la première date d'envoi ne pouvait être retenue comme étant déterminante dès lors que l'on était en présence d'un deuxième envoi et non de la continuation d'un processus qui s'était prolongé en raison de circonstances particulières. Enfin, elle a jugé que la simple production d'une enveloppe vide, fût-elle timbrée, ne permettait pas encore d'établir que son contenu correspondait à celui du pli notifié tardivement.
2.
Le recourant se prévaut d'une violation de l'interdiction de l'arbitraire, de formalisme excessif, d'inégalité de traitement, ainsi que d'une violation du principe de la proportionnalité.
En bref, le recourant allègue que le secrétariat de son mandataire a ouvert par inadvertance le pli posté le 5 octobre 2015 qui lui avait été retourné le 13 octobre suivant. Afin d'établir le contenu de l'enveloppe, il dépose le fichier informatique du recours daté du 5 octobre 2015, alléguant qu'il ressort des propriétés de ce document qu'il avait été modifié pour la dernière fois ce jour-là à 20h34'19'' et que ce texte est identique à celui qui figurait dans l'envoi du 13 octobre 2015. Il en conclut que la preuve du contenu de l'enveloppe est ainsi rapportée.
En ce qui concerne les conséquences juridiques de l'envoi du recours à l'ancienne adresse du tribunal cantonal, le recourant se réfère aux avis de DONZALLAZ (Loi sur le Tribunal fédéral, Commentaire, 2008, n. 1236) et de POUDRET/SANDOZ-MONOD (Commentaire de la loi fédérale d'organisation judiciaire, vol. I, 1990, n. 4.3.1 ad art. 32 OJ), qui mentionnent l'arrêt ATF 39 I 54. Il relève que si la Poste retourne le pli à l'expéditeur pour corriger l'adresse défectueuse, sans pour autant le refuser, l'acte est censé lui avoir été remis à la date de la première expédition. Dans le présent cas, le recourant observe que le pli du 5 octobre 2015 n'a jamais été refusé par la Poste; il en déduit que cette date marque le jour du dépôt de son recours.
3.
3.1. Comme le mandataire du recourant a ouvert l'enveloppe qu'il avait adressée au tribunal cantonal le 5 octobre 2015 et que la Poste lui avait retournée le 13 octobre suivant, il lui incombe de prouver qu'elle contenait le recours formé contre la décision du 2 septembre 2015; admettre le contraire ouvrirait la porte à toutes sortes d'abus. Par analogie, on rappellera qu'un assureur social ne peut en principe faire supporter à l'assuré la preuve du dépôt d'une opposition en temps utile, lorsque cette preuve ne peut être rapportée que par le cachet postal apposé sur l'enveloppe que l'assureur n'a pas conservée (cf. arrêts <ref-ruling> consid. 3b p. 376, et U 344/98 du 12 mars 1999 consid. 3c, in RAMA 1999 p. 416).
Devant le Tribunal fédéral, le recourant produit un fichier informatique contenant le mémoire de recours daté du 5 octobre 2015, afin de prouver que le document envoyé à l'ancienne adresse de la juridiction cantonale avait été modifié pour la dernière fois avant son dépôt dans la boîte aux lettres. Ce moyen de preuve est recevable (<ref-law>). D'une part, le tribunal cantonal n'a pas invité le recourant à s'exprimer sur la question de la preuve du contenu de l'enveloppe avant de rendre son jugement, point sur lequel le recourant n'avait pas à compter dès lors qu'il n'avait que transmis son premier envoi à l'autorité judiciaire (cf. CORBOZ, Commentaire de la LTF, 2e éd., n. 25a ad <ref-law>); d'autre part, le fichier informatique produit ne constitue de toute manière que la version électronique de l'acte daté du 5 octobre 2015 auquel il peut être assimilé.
A la lecture des propriétés du fichier informatique, on constate que le texte du recours daté du 5 octobre 2015 a été modifié pour la dernière fois ce jour-là à 21h34'00'', soit avant le moment du dépôt attesté par les deux témoins (22h15); en outre, le texte correspond à celui que le recourant avait transmis au tribunal cantonal le 13 octobre 2015. Le recourant a ainsi établi que le mémoire de recours daté du 5 octobre 2015, qu'il a fait suivre à la juridiction cantonale le 13 octobre suivant, est bien celui qui se trouvait dans l'enveloppe qui avait été envoyée le 5 octobre 2015 à l'ancienne adresse du tribunal cantonal. L'intimé n'a d'ailleurs soulevé aucune objection à ce sujet dans sa réponse.
3.2. L'argumentation du recourant est également bien fondée dans la mesure où il soutient que le dépôt du recours au tribunal cantonal est intervenu à temps, nonobstant l'envoi à l'ancienne adresse de cette autorité. Deux arrêts vont dans le même sens, l'un concernant la notification d'une décision administrative, l'autre le versement d'une avance de frais, qui n'ont pas abouti.
Dans l'affaire qui avait donné lieu à l'arrêt H 260/96 du 20 octobre 1997, une caisse de compensation avait notifié une décision en réparation d'un dommage à un destinataire dont l'adresse n'était plus valable. Le pli contenant la décision avait été retourné par l'office postal destinataire à la caisse de compensation qui l'avait ensuite fait parvenir à bon port. Le Tribunal fédéral des assurances avait considéré que la caisse, en remettant la décision à la poste dans le délai prescrit à l'art. 82 aRAVS, avait fait valoir en temps utile sa créance en réparation du dommage. En effet, la non-communication d'une décision n'affecte pas sa validité mais exclusivement son opposabilité, c'est-à-dire ses effets. Dans la mesure où la décision était pleinement valide, sa remise en temps utile à un bureau de poste suffisait pour sauvegarder le délai de l'art. 82 aRAVS.
Dans l'arrêt 9C_94/2008 du 30 septembre 2008, publié in SVR 2009 IV n° 17 p. 45, le Tribunal fédéral avait été saisi d'un recours contre une décision d'irrecevabilité du Tribunal administratif fédéral qui n'était pas entré en matière sur un recours en raison du défaut de versement de l'avance de frais requise. Cette avance avait pourtant été versée à la Poste Suisse en faveur de cette autorité six jours avant l'expiration du délai imparti, mais elle n'avait pas été créditée sur la compte du destinataire en raison d'une erreur dans la transcription du numéro IBAN (International Bank Account Number), le vingt-et-unième et dernier caractère de ce numéro ayant été omis. Le Tribunal fédéral a considéré que l'oubli de ce dernier caractère ne saurait constituer une erreur inexcusable; il a admis que les conditions légales mises à l'observation de tels délais avaient donc été pleinement respectées.
A lumière de ces principes, on doit admettre que le recours cantonal a été déposé non pas le 13 octobre 2015 au tribunal cantonal, comme celui-ci l'a constaté à tort, mais déjà le 5 octobre précédent, étant précisé que la valeur des attestations des deux témoins n'est ni discutée ni remise en cause. A cet égard et contrairement à l'opinion du tribunal cantonal, le deuxième envoi s'inscrit dans un processus qui s'est prolongé en raison de circonstances particulières.
3.3. Vu ce qui précède, le Tribunal fédéral retient que le recourant a déféré la décision de l'intimé du 2 septembre 2015 en temps utile à la juridiction cantonale (art. 60 al. 1 et 2 LPGA, en liaison avec l'<ref-law>). La cause doit ainsi lui être renvoyée afin qu'elle reprenne l'instruction du recours du 5 octobre 2015.
4.
L'intimé, qui succombe, supportera les frais de la procédure (<ref-law>) ainsi que les dépens du recourant (<ref-law>).

Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est admis. La décision du Tribunal cantonal du canton de Fribourg, Cour des assurances sociales, du 28 octobre 2015, est annulée, la cause lui étant renvoyée pour qu'il reprenne l'instruction du recours du 5 octobre 2015.
2.
Les frais judiciaires, arrêtés à 500 fr., sont mis à la charge de l'intimé.
3.
L'intimé versera au recourant une indemnité de dépens de 2'800 fr. pour la procédure fédérale.
4.
Le présent arrêt est communiqué aux parties, au Tribunal cantonal du canton de Fribourg, Cour des assurances sociales, et à l'Office fédéral des assurances sociales.
Lucerne, le 5 juillet 2016
Au nom de la IIe Cour de droit social
du Tribunal fédéral suisse
La Présidente : Glanzmann
Le Greffier : Berthoud