Javascript 如何通过Socket.IO服务器端发送和捕获消息
我不太清楚如何理解socket.io中消息的用法。我试图将消息从客户端发送到服务器,然后服务器回复到客户端(基本nah?) 这是服务器代码:Javascript 如何通过Socket.IO服务器端发送和捕获消息,javascript,node.js,websocket,socket.io,Javascript,Node.js,Websocket,Socket.io,我不太清楚如何理解socket.io中消息的用法。我试图将消息从客户端发送到服务器,然后服务器回复到客户端(基本nah?) 这是服务器代码: var fs = require('fs'); var hskey = fs.readFileSync('ssl.key'); var hscert = fs.readFileSync('ssl.crt'); var options = { key: hskey, cert: hscert }; var app = require('h
var fs = require('fs');
var hskey = fs.readFileSync('ssl.key');
var hscert = fs.readFileSync('ssl.crt');
var options = {
key: hskey,
cert: hscert
};
var app = require('https').createServer(options);
var io = require('/usr/local/lib/node_modules/socket.io').listen(app);
app.listen(8181);
io.sockets.on('connection', function (socket) {
socket.emit('serverMessage', 'Hello world!');
io.sockets.emit('serverMessage', 'A user connected');
io.sockets.on('clientMessage', function (socket) {
socket.emit('serverMessage', 'Gotamessage bitch!');
console.log('I received a message by ', from, ' saying ', msg);
});
socket.on('disconnect', function () {
io.sockets.emit('serverMessage', 'A user disconnected');
});
});
这是客户端代码:
<script>
var socket;
var firstconnect = true;
function connect() {
if(firstconnect) {
socket = io.connect('https://secure.connectednodes.com:8181');
socket.on('serverMessage', function(data){ message(data); });
socket.on('connect', function(){ status_update("Connected to Server"); });
socket.on('disconnect', function(){ status_update("Disconnected from Server"); });
socket.on('reconnect', function(){ status_update("Reconnected to Server"); });
socket.on('reconnecting', function( nextRetry ){ status_update("Reconnecting in "
+ nextRetry + " seconds"); });
socket.on('reconnect_failed', function(){ message("Reconnect Failed"); });
firstconnect = false;
}
else {
socket.socket.reconnect();
}
}
function disconnect() {
socket.disconnect();
}
function message(data) {
document.getElementById('message').innerHTML += "<br>" + "Server says: " + data;
}
function status_update(txt){
document.getElementById('status').innerHTML = txt;
}
function esc(msg){
return msg.replace(/</g, '<').replace(/>/g, '>');
}
function send() {
socket.emit('clientMessage', 'Yo server');
};
</script>
无功插座;
var firstconnect=true;
函数连接(){
如果(第一连接){
套接字=io.connect('https://secure.connectednodes.com:8181');
on('serverMessage',函数(数据){message(数据);});
on('connect',function(){status_update(“Connected to Server”);});
on('disconnect',function(){status_update(“Disconnected from Server”);});
on('reconnect',function(){status_update(“Reconnected to Server”);});
socket.on('reconnecting',function(nextRetry){status_update('reconnecting in'
+nextRetry+“秒”);});
on('reconnect_failed',function(){message(“reconnect failed”);});
firstconnect=false;
}
否则{
socket.socket.reconnect();
}
}
功能断开(){
socket.disconnect();
}
功能信息(数据){
document.getElementById('message')。innerHTML++=“
”+”服务器说:“+数据;
}
功能状态更新(txt){
document.getElementById('status')。innerHTML=txt;
}
功能esc(msg){
返回msg.replace(//g',);
}
函数send(){
emit('clientMessage','yoserver');
};
我设法使连接和断开连接正常工作,但无法使io.sockets.on('clientMessage')正常工作。有什么想法吗?我认为您必须使用socket.on而不是io.sockets.on 服务器端
socket.on('clientMessage', function (data, from) {
socket.emit('serverMessage', 'Got a message!');
console.log('I received a message by ', from, ' saying ', msg);
});
客户端
function send() {
socket.emit('clientMessage', 'Yo server', 'USER001');
};
试试看