限制自己使用命名空间

如果您可以控制为特定应用程序发出的所有消息和事件,则使用默认/命名空间。 如果您想利用第三方代码,或生成与其他人共享的代码,socket.io提供了一种命名空间socket的方法。

这具有多路复用单个连接的优点。 而不是使用两个WebSocket连接的socket.io,它将使用一个。

Server (app.js)

  1. const io = require('socket.io')(80)
  2. const chat = io
  3. .of('/chat')
  4. .on('connection',(socket)=>{
  5. socket.emit('a message',{
  6. that:'only',
  7. '/chat':'will get'
  8. })
  9. chat.emit('a message',{
  10. everyone:'in',
  11. '/chat':'will get'
  12. })
  13. })
  14. const news = io
  15. .of('/news')
  16. .on('connection',socket=>{
  17. socket.emit('item',{news:'item'})
  18. })

Client (index.html)

  1. <script>
  2. const chat = io.connect('http://localhost/chat')
  3. const news = io.connect('http://localhost/news')
  4. chat.on('connect',()=>{
  5. chat.emit('hi~')
  6. })
  7. news.on('news',()=>{
  8. news.emit('wowo~')
  9. })
  10. </script>