我对使用函数传递的'socket'参数感到困惑(在'enigma'部分中).然后参数使用'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);
Run Code Online (Sandbox Code Playgroud)
谜
io.on('connection', function (socket) {
console.log('user connected');
socket.on('message', function(msg) {
console.log('message: ' + msg);
io.emit('message', msg);
})
});
Run Code Online (Sandbox Code Playgroud)
启动服务器
server.listen(3000, function() {
console.log('server is running');
});
Run Code Online (Sandbox Code Playgroud)
index.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 = '';
};
Run Code Online (Sandbox Code Playgroud)
Con*_*nor 11
在您的代码示例中,io是一个Socket.IO服务器实例,附加到http.Server侦听传入事件的实例.
事件侦听器回调函数的socket参数connection是一个对象,表示来自客户端的传入套接字连接.
他们俩都可以使用该on方法监听事件.
如果您重新想象您的代码示例,它可能会帮助您在视觉上理解这两者是如何分开的:
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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6354 次 |
| 最近记录: |