簡體   English   中英

NodeJS中的Socket.IO-從客戶端發出事件不起作用

[英]Socket.IO in NodeJS - emitting event from client-side doesn's works

我在服務器端有以下代碼:

var express = require('express');

module.exports = function(io){

 var router = express.Router();
 router.get('/', function(req, res, next) {
 res.render('monitoring', { title: 'monitoring-test' });
 });



io.on("connection", function(socket) {
    console.log('test connection!');
    socket.on("SampleEvent", function (args1) {
        console.log('called Sample event');
    });
});


    return router;
 }

在客戶端,我有:

var socket = io.connect('http://localhost:3000/monitoring')
 alert("alertbox1");


$(document).ready(function() {
    $("#btnCallEvent").click(function(){
        var args1 = {user: "client1", text: "Hello, world!"};
socket.emit("SampleEvent", args);
    }); 
});

OnClick事件有效,並且連接也有效-在打開監視站點后,我具有'test connection!' 在控制台中。 但是,當我嘗試從客戶端(單擊按鈕后)調用SampleEvent時,沒有任何反應。

這是我在服務器端使用我的socket.io的方式,適用於我:

在文件頂部進行設置:

var express = require('express');
var app = express();
var http = require('http').Server(app);
var io = require('socket.io')(http);

返回套接字事件:

io.on('connection', function(socket){
    socket.on('MyEvent', function(data) {
        console.log('My Event has fired and contains:');
        console.log(data);
    });
});

然后在客戶端:

<script src="/socket.io/socket.io.js"></script>
<script>
    var socket = io();
    socket.emit('MyEvent', {EventData1: 'test', EventData2: 'test2' });
</script>

我認為您的問題是,您正在連接到/ monitoring,這可能會隱式選擇一個名為Monitoring的名稱空間/房間。 嘗試直接連接到/

io.connect('http://localhost:3000/')

看看是否有所作為。 而且,在哪里將socket.io添加到基礎的http服務器(在這種情況下,請表示為)。 它不會顯示在您的樣本中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM