[英]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.