英文:
pusher presence can't get members using angularjs and golang
问题
我正在尝试使用这里的示例,目前我已经设置了以下内容:
// angularjs
<!-- language: lang-js -->
// JS
var presenceClient = new Pusher('API_KEY', {
authEndpoint: apiServer + "/presence_auth",
authTransport: 'jsonp',
encrypted: true
})
var c = pusher.subscribe("presence-testchan")
Utils.log(c.members.count) // 0
Utils.log("000============")
c.bind('pusher:subscription_succeeded', function(members) {
Utils.log("succeeded?")
Utils.log(members)
})
// golang和presence端点
<!-- language: go -->
func Presence(w http.ResponseWriter, r *http.Request, next http.HandlerFunc) {
params, _ := GetBytes(r.URL.String())
presenceData := pusher.MemberData{
UserId: database.GenerateStrObjID(),
UserInfo: map[string]string{
"twitter": "pusher",
},
}
response, err := PusherClient.AuthenticatePresenceChannel(params, presenceData)
if err != nil {
panic(err)
}
respondToJSON(w, string(response))
}
func respondToJSON(w http.ResponseWriter, data interface{}) {
r := render.New()
r.JSON(w, http.StatusOK, data)
}
我猜这是基本形式。但是我没有得到任何成员计数?我可以从API获得响应:
"{"auth":"7d6e393c49c579c43a0c:6cd45662ef57fbc3ab16d8052c43bf95e7415846f736c2499bac7628ca3b75bc","channel_data":"{\"user_id\":\"56f9e5ffcc1cb466a624a3cf\",\"user_info\":{\"twitter\":\"pusher\"}}"}"
但是出现错误:
Uncaught SyntaxError: Unexpected token :
我是否遗漏了什么或者我的设置有问题?
英文:
I am trying to use the examples from here so far this is what I have setup
// angularjs
<!-- language: lang-js -->
// JS
var presenceClient = new Pusher('API_KEY', {
authEndpoint: apiServer + "/presence_auth",
authTransport: 'jsonp',
encrypted: true
})
var c = pusher.subscribe("presence-testchan")
Utils.log(c.members.count) // 0
Utils.log("000============")
c.bind('pusher:subscription_succeeded', function(members) {
Utils.log("succeeded?")
Utils.log(members)
})
// golang and the presence endpoint
<!-- language: go -->
func Presence(w http.ResponseWriter, r *http.Request, next http.HandlerFunc) {
params, _ := GetBytes(r.URL.String())
presenceData := pusher.MemberData{
UserId: database.GenerateStrObjID(),
UserInfo: map[string]string{
"twitter": "pusher",
},
}
response, err := PusherClient.AuthenticatePresenceChannel(params, presenceData)
if err != nil {
panic(err)
}
respondToJSON(w, string(response))
}
func respondToJSON(w http.ResponseWriter, data interface{}) {
r := render.New()
r.JSON(w, http.StatusOK, data)
}
I guess that is the basic form. but I don't get any members count?. I can get a response from the API with
"{\"auth\":\"7d6e393c49c579c43a0c:6cd45662ef57fbc3ab16d8052c43bf95e7415846f736c2499bac7628ca3b75bc\",\"channel_data\":\"{\\\"user_id\\\":\\\"56f9e5ffcc1cb466a624a3cf\\\",\\\"user_info\\\":{\\\"twitter\\\":\\\"pusher\\\"}}\"}"
but has error
Uncaught SyntaxError: Unexpected token :
Am I missing something or my setup is wrong?
答案1
得分: 0
NVM,问题已解决...在Go示例文档中缺少将其以jsonp
和回调函数返回的部分。响应应该包含类似以下内容的内容...
Pusher.auth_callbacks['1']({auth: "7d6e393c49c579c43a0c:33a442fcc9d3bf67febfeeb59e5a8e4f0364901069534cdef006b0b047df9f75",...});
auth:"7d6e393c49c579c43a0c:33a442fcc9d3bf67febfeeb59e5a8e4f0364901069534cdef006b0b047df9f75"
channel_data :"{"user_id":"56fa1231cc1cb48a1cdb243c","user_info":{"twitter":"pusher"}}"
英文:
NVM, solved the problem.. it's missing in the docs for Go examples to return it in jsonp
with callback func. response should have something like this...
Pusher.auth_callbacks['1']({auth: "7d6e393c49c579c43a0c:33a442fcc9d3bf67febfeeb59e5a8e4f0364901069534cdef006b0b047df9f75",…});
auth:"7d6e393c49c579c43a0c:33a442fcc9d3bf67febfeeb59e5a8e4f0364901069534cdef006b0b047df9f75"
channel_data :"{"user_id":"56fa1231cc1cb48a1cdb243c","user_info":{"twitter":"pusher"}}"
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论