我有一个项目即将推出,我需要通过特定的移动运营商发送和接收消息,该运营商只提供一个 SMPP 接口。整个项目将是一个托管网站。我已经阅读了很多内容,但我还不太了解我这边实际需要什么来使用该协议。
我的应用程序是否应该尝试保持与 smpp 的持续连接?我可以简单地连接、发送消息然后断开连接吗?
接收消息是基于推送还是拉取?
谢谢您的帮助。
我有一个项目即将推出,我需要通过特定的移动运营商发送和接收消息,该运营商只提供一个 SMPP 接口。整个项目将是一个托管网站。我已经阅读了很多内容,但我还不太了解我这边实际需要什么来使用该协议。
我的应用程序是否应该尝试保持与 smpp 的持续连接?我可以简单地连接、发送消息然后断开连接吗?
接收消息是基于推送还是拉取?
谢谢您的帮助。
SMPP 是一种对等协议。这应该意味着 SMS Gateway(您的一方)和 SMSC(您的移动运营商)需要建立正确的绑定/连接。即使没有要发送/接收的 SMS 或 DLR,也会持续交换 smpp PDU (enquire_link/enquire-link_resp),以确保建立绑定。详细地说,如果您发送 enquire_link PDU 并且没有收到响应 (enquire_link_resp),则绑定被破坏。您的短信将不会送达(将在您的网关存储中保持排队),并且您不会收到 MO(传入短信)或 DLR(送达报告)。要重新建立连接,您应该重新启动连接。
因此,我的回答是您需要与 SMSC 保持持续连接。
您说您想接收消息,因此至少bind_receiver
需要 a 。因为您不知道什么时候会收到消息,所以您必须不断地保持联系,而不是在每次事件后断开连接。
关于您关于“推或拉”的问题,这取决于您如何解决第一个问题。如果你可以构建一个持续连接的解决方案,结果将是一个推送(运营商一收到消息就会推送给你)。如果(由于某种原因)你不能保持一个持续的连接,你最终会建立一个拉机制。您将每隔 X 秒连接到运营商,以查看他们是否有消息等着您。
我确实需要强调两个陷阱:
因此,持续的连接确实是要走的路。或者,您可以查看像 Nexmo 这样的公司,它会在每次消息到达时为您提供 HTTP 调用。
我不确定您使用哪种语言开发您的应用程序,但如果您使用任何流行的语言(Java、PHP、Perl),那里的模块可以为您处理基本的 SMPP 连接。快速谷歌搜索您的语言和“SMPP 客户端”将为您提供参考列表。