Socket.io中io.on和socket.on的区别?

2023-12-31

我对随函数传递的“套接字”参数是什么感到困惑(在“谜”部分中)。然后使用参数“socket.on”。 io.on 和 socket.on 有什么区别?

以下代码稍微改编自 Socket.io 聊天应用程序示例。

变量

var http = require('http');
var express = require('express');
var app = express();
var server = http.createServer(app)
var io = require('socket.io').listen(server);

谜团

io.on('connection', function (socket) {
  console.log('user connected');
  socket.on('message', function(msg) {
    console.log('message: ' + msg);
    io.emit('message', msg);
  })
});

启动服务器

server.listen(3000, function() {
  console.log('server is running');
});

索引.jade

body
  script(src="/socket.io/socket.io.js")

form(method='post', action="/")
  input(type='text', id='user', autocomplete='off')
  input(type='submit', onClick="myFunc()")

strong messages:
  p(id="messages")

script.
  var socket = io();

  socket.on('message', function(msg) {
    console.log('client: ' + msg);
  });

  function myFunc() {
    var text = document.getElementById('user');
    socket.emit('message', text.value);
    text.value = '';
  };

在您的代码示例中,io是附加到实例的 Socket.IO 服务器实例http.Server监听传入的事件。

The socket的论点connection事件侦听器回调函数是一个对象,表示来自客户端的传入套接字连接。

他们都可以监听事件on method.

如果您像这样重新想象您的代码示例,它可能会帮助您直观地理解两者是如何分开的:

var connectionEvent = function(socket) {
    console.log('user connected');
    socket.on('message', function(msg) {
        console.log('message: ' + msg);
        io.emit('message', msg);
    });
};

io.on('connection', connectionEvent);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Socket.io中io.on和socket.on的区别? 的相关文章