在尝试使用Sinch Instant Messaging SDK构建Web应用程序时,我遇到了一个使用最新的Javascript Instant Messaging SDK here无法接收即时消息的问题。我一直在关注this教程,以帮助构建我的应用程序,我认为使用不同版本的SDK可以接收即时消息。但是,本教程中的SDK版本不允许我使用生成的userTickets对我的应用程序进行身份验证,而最新的SDK版本则可以。
所以,我想知道是否有办法为教程中的SDK使用生成的userTickets或使用最新的SDK接收即时消息。
在最新的SDK上,我尝试在配置期间将supportActiveConnection设置为true,以便使用教程中的代码接收消息但没有成功。以下是本教程中用于接收消息的一些相关代码片段:
sinchClient = new SinchClient({
applicationKey: 'APP_KEY',
capabilities: {
messaging: true
},
supportActiveConnection: true,
});
var loginObject = {
username: username,
password: password
};
sinchClient.start(loginObject, function() {
global_username = username;
showPickRecipient();
}).fail(handleError);
var messageClient = sinchClient.getMessageClient();
var eventListener = {
onIncomingMessage: function(message) {
if (message.senderId == global_username) {
$('div#chatArea').append('<div>' + message.textBody + '</div>');
} else {
$('div#chatArea').append('<div style="color:red;">' + message.textBody + '</div>');
}
}
}
messageClient.addEventListener(eventListener);
身份验证票证由python后端通过以下函数和处理程序生成:
def getAuthTicket(username):
userTicket = {
'identity': {'type': 'username', 'endpoint': username},
'expiresIn': 3600,
'applicationKey': APPLICATION_KEY,
'created': datetime.utcnow().isoformat()
}
userTicketJson = json.dumps(userTicket).replace(" ", "")
userTicketBase64 = base64.b64encode(userTicketJson)
# TicketSignature = Base64 ( HMAC-SHA256 ( ApplicationSecret, UTF8 ( UserTicketJson ) ) )
digest = hmac.new(base64.b64decode(
APPLICATION_SECRET), msg=userTicketJson, digestmod=hashlib.sha256).digest()
signature = base64.b64encode(digest)
# UserTicket = TicketData + ":" + TicketSignature
signedUserTicket = userTicketBase64 + ':' + signature
return {"userTicket": signedUserTicket}
class TicketHandler(BaseHandler):
def get(self):
self.response.write(getAuthTicket(self.username))
然后在客户端,我在票务处理程序上调用get请求。
$.get('/ticket', function(authTicket) {
sinchClient.start(eval("(" + authTicket + ")"))
.then(function() {
console.log("success");
})
.fail(function(error) {
console.log("fail");
});
});
当我尝试使用本教程中的sinch.min.js文件启动Sinch客户端时得到的错误是没有有效的身份或身份验证票&#34;。