我目前正在学习将socket.io与节点js一起使用,但我很难过,因为我觉得版本之间可能有些变化。我有一个使用1.0.4的小型演示,其中我使用这样的东西从客户端发送事件并在服务器中接收它们:
服务器
var socketio = require('socket.io');
var http = require('http');
var app = express();
var server = http.Server(app);
var io = socketio.listen(server);
var port = process.env.PORT || 8080;
server.listen(port, function(){
console.log("Express server listening on port " + port);
});
io.on('connection', function (socket) {
socket.emit('connected');
socket.on('myEvent', function(){
console.log('myEvent has been emitted');
});
});
客户端
$(document).ready(function(){
$('#button').click(function(){
emitEvent();
});
});
var socket = io.connect('http://localhost:8080/');
socket.on('connected', function () {
alert('server says I am connected');
});
function emitEvent(){
socket.emit('myEvent');
}
对于这两个版本,我可以打开客户端上的套接字并接收稍后从服务器发送的“已连接”事件,而不是启动警报功能。这里的问题是我想从客户端发送任何其他事件。 “socket.emit( 'myEvent');”在emitEvent函数中似乎适用于1.0.4版本,但不适用于1.0.6版本。我一直在寻找有关更改的信息,并试图了解整个模块,但无法找到解决方案。有谁知道我做错了什么?显然,发送客户端事件的方式已经改变。如果有人可以帮我解决这个问题,我将不胜感激。提前谢谢。
答案 0 :(得分:0)
我实际上并不理解这个问题。但这是您的功能代码。
客户端:
var socket = io.connect();
$('#button').click(function(){
socket.emit('myEvent');
});
socket.on('connected', function(){
alert "you are connected";
});
服务器:
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(app);
var port = process.env.PORT || 8080;
app.listen(port);
io.on('connection', function(socket){
socket.on('myEvent', function(){
socket.emit('connected');
console.log('emmited succesfully');
});
});