繁体   English   中英

使用带有socket.io的jQuery

[英]using jQuery with socket.io

我正在尝试在我的socket.io js(index.js)文件中使用jQuery。

每当我尝试去做

<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="/socket.io/socket.io.js"></script> 
<script src="index.js"></script>
<script>
  var socket = io();
  $('form').submit(function(){
    socket.emit('chat message', $('#m').val());
    $('#m').val('');
    return false;
  });
  socket.on('chat message', function(msg){
    $('#messages').append($('<li>').text(msg));
  });
  socket.on('new user', function(data){
    $('#newUserMessage').text(data);
  });        
</script> 

我在控制台中收到此错误

GET http://localhost:3000/index.js 

ReferenceError: $ is not defined

我不确定为什么会这样?

但是,如果我将其删除,则无法在index.js中使用jQuery的功能?

我的index.js文件

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

var $usernameInput = $('.usernameInput');

app.get('/', function(req, res){
  res.sendFile(__dirname + '/index.html');
});

io.on('connection', function(socket){
  socket.broadcast.emit('new user', 'New User Joined, Say Hi :D');
  socket.on('chat message', function(msg){
    io.emit('chat message', msg);
  });
});

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

function setUsername () {
  username = cleanInput($usernameInput.val().trim());

  if (username) {
    socket.emit('add user', username);
  }
}

您有些困惑,您拥有前端,而您拥有后端。

index.js是您的后端,您可以使用NodeJS运行该后端,而无需尝试在后端使用jQuery,因此无需操作DOM。 另外,您在前端不包括index.js ,这是后端代码。

这是错误的:

var $usernameInput = $('.usernameInput');

您无法访问DOM来获取该值,而必须将其发送到后端,并且需要发生类似以下事件:

前端

<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="/socket.io/socket.io.js"></script> 
<script>
  var socket = io();
  $('form').submit(function(){
    socket.emit('chatMessage', $('#m').val());
    $('#m').val('');
    return false;
  });
  socket.on('connect', function(){
    socket.emit('setUser', $('.usernameInput').val().trim());
  });
  socket.on('chatMessage', function(msg){
    $('#messages').append($('<li>').text(msg));
  });
  socket.on('newUser', function(data){
    $('#newUserMessage').text(data);
  });        
</script>

后端

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

app.get('/', function(req, res){
  res.sendFile(__dirname + '/index.html');
});

io.on('connection', function(socket){
  socket.broadcast.emit('newUser', 'New User Joined, Say Hi :D');
  socket.on('setUser', function(username){
    console.log(username); //here you have your user name
  });
  socket.on('chatMessage', function(msg){
    io.emit('chatMessage', msg);
  });
});

这是我的套接字IO代码

<script>
    var socket = io.connect('<?php echo $_SERVER['REQUEST_SCHEME'] . '://' . $_SERVER['SERVER_NAME'] . ":8000" ?>');
    console.log("tests" + socket);
    socket.on('connect', function () {

    });
    socket.on('call_admin_notification', function (data) {
        getAdminNotification();
    });       

</script>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM