javascript – Socket.io在使用命名空间时不发送/接收事件
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – Socket.io在使用命名空间时不发送/接收事件,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1323字,纯文字阅读大概需要2分钟。
内容图文
![javascript – Socket.io在使用命名空间时不发送/接收事件](/upload/InfoBanner/zyjiaocheng/723/db846f337c83487882ed4f882c7a9946.jpg)
我在coffeescript中编写了以下代码,它在服务器端使用了socket.io和node.js
服务器
io.of("/room").authorization (handshakeData, callback) ->
#Check if authorized
callback(null,true)
.on 'connection', (socket) ->
console.log "connected!"
socket.emit 'newMessage', {msg: "Hello!!", type: 1}
socket.on 'sendMessage', (data) ->
@io.sockets.in("/room").emit 'newMessage', {msg: "New Message!!", type: 0}
客户
socket = io.connect '/'
socket.of("/room")
.on 'connect_failed', (reason) ->
console.log 'unable to connect to namespace', reason
.on 'connect', ->
console.log 'sucessfully established a connection with the namespace'
socket.on 'newMessage', (message) ->
console.log "Message received: #{message.msg}"
我的问题是,在我开始使用命名空间后,服务器和客户端之间的通信已停止工作.我没有找到任何与此相似的工作示例,所以我可能做错了什么
解决方法:
客户端上不使用命名空间,就像它们在服务器端使用一样.您的客户端代码应该直接连接到命名空间路径,如下所示:
var socket = io.connect('/namespace');
socket.on('event', function(data) {
// handle event
});
话虽如此,名称空间与房间不同.命名空间在客户端连接,而房间在服务器端连接.因此,此代码不起作用:
io.sockets.in('/namespace').emit('event', data);
您必须引用命名空间,或者从全局io对象中调用它.
var nsp = io.of('/namespace');
nsp.emit('event', data);
// or get the global reference
io.of('/namespace').emit('event', data);
内容总结
以上是互联网集市为您收集整理的javascript – Socket.io在使用命名空间时不发送/接收事件全部内容,希望文章能够帮你解决javascript – Socket.io在使用命名空间时不发送/接收事件所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。