我有一个项目,我需要通过一个特定的移动运营商发送和接收消息,它只提供一个SMPP接口。整个项目将是一个托管网站。我已经读了很多,但我还不太明白使用该协议实际上需要从我这方面做些什么。
我的应用程序是否应该尝试保持与smpp的持续连接?我可以简单地连接,发送消息,然后断开连接吗?
接收消息是基于推送还是拉取?
谢谢你的帮助。
发布于 2013-06-30 19:21:17
SMPP是一种点对点协议。这应该意味着SMS网关(您的一侧)和SMSC (您的移动运营商)需要有一个适当的绑定/连接建立。即使当没有SMS或DLR要发送/接收时,也存在确保建立绑定的smpp (enquire_link/enquire-link_resp)的连续交换。具体地说,如果发送enquire_link协议数据单元但没有得到响应(enquire_link_resp),绑定就会中断。您的sms将不会被传送(将保持在您的网关存储中排队),并且您将不会收到MOs (传入sms)或DLR(传送报告)。要重新建立连接,您应该重新启动连接。
因此,我的答案是,您需要与SMSC保持持续的连接。
发布于 2011-06-04 01:32:59
您声明要接收消息,因此至少需要一个bind_receiver。因为你不知道消息什么时候会进来,所以你必须一直保持连接,而不是在每次事件后断开连接。
关于你关于“推还是拉”的问题,这取决于你如何解决第一个问题。如果您可以构建一个持续连接的解决方案,结果将是推送(运营商收到消息后会立即推送给您)。如果(由于某些原因)你不能保持一个持续的连接,你将最终构建一个拉动机制。你将每隔X秒连接一次运营商,看看他们是否有消息等着你。
不过,我需要强调两个陷阱:
因此,持续的连接才是真正要走的路。或者,您可以查看像Nexmo这样的公司,它会在每次消息到达时为您提供HTTP调用。
我不确定您使用哪种语言开发您的应用程序,但是如果您使用任何流行的语言(Java、PHP、Perl),有一些模块可以为您处理基本的SMPP连接性。在google上快速搜索您的语言和"SMPP Client“,就会给出一个参考列表。
https://stackoverflow.com/questions/4633217
复制相似问题