簡體   English   中英

socket.io客戶端無法向服務器發送消息

[英]socket.io client unable to emit message to server

我不知道為什么我的socket.io服務器沒有收到來自客戶端的消息。 這是我的服務器JS文件:

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

io.on('connection', function(socket){

    console.log('a user connected');

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

    socket.on('disconnect', function(){
        console.log('user disconnected');
    });
});

http.listen(3000, function(){
    console.log('listening on *:3000');
});

這是客戶端代碼:

$(function () {

    var socket = io(':3000/socket.io/socket.io.js');

    $('#bid-form').on('submit',function(){
        socket.emit('bid', 'test');
        console.log('emit');
        return false;
    });
});

當我打開和關閉瀏覽器頁面時,在服務器控制台上看到“用戶已連接”和“用戶已斷開”消息,因此我知道它正在建立連接。

當我提交表單時,我在瀏覽器控制台中看到“發出”消息,因此我知道表單提交事件正在觸發,但是我沒有在服務器上收到測試消息。 在客戶端或服務器端似乎什么也沒有發生,看來“ socket.emit”功能沒有做任何事情。

我究竟做錯了什么?

我的假設是您正在localhost上運行Express服務器。

看起來您正在直接通過file://訪問HTML文件,除非您的客戶端代碼由其他Web服務器托管。 但是無論如何,這是連接方式:

<script src="http://localhost:3000/socket.io/socket.io.js"></script>
<script src="https://code.jquery.com/jquery-1.11.1.js"></script>
<script>
  $(function () {
    var socket = io("http://localhost:3000");
    $('#bid-form').on('submit',function(){
      socket.emit('bid', 'test');
      console.log('emit');
      return false;
    });
  });
</script>

您將需要通過script標簽加載socket.io.js文件。 然后通過為io()函數提供socket.io服務器的主機,連接到socket.io服務器。

暫無
暫無

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

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